使用 Wireshark 选择需要抓包的网络方式,并设置过滤器条件,当有数据通信后即可抓到对应的数据包,这里将分析其每一帧数据包的结构。

以HTTP协议为例,一帧数据包一般包括以下几个部分:

  • Frame:物理层的数据帧情况。
  • Ethernet II :数据链路层以太网帧头部信息。
  • Internet Protocol Version 4:以太网协议层。
  • Transmission Control Protocol:传输控制协议。
  • HyperText Transfer Protocol:超文本传输协议。

对于各种协议而言,前三层基本一样,第四层开始就可以出现TCP, UDP 协议,第五层就有HTTP 应用层协议等。

第一层:Frame:(物理层)

 // 第8056帧,有507个字节在线,共4056位,实际在接口0上捕获到507个字节
Frame : bytes on wire ( bits), bytes captured ( bits) on interface
// 接口ID:0
Interface id: (\Device\NPF_{7920DB7B-B8DB-417F-8C85-72E6DCCD61C5})
// 封装类型
Encapsulation type: Ethernet ()
// 到达时间
Arrival Time: Aug , ::00.750794000 中国标准时间
// 包偏移量
[Time shift for this packet: 0.000000000 seconds]
// 新纪元时间
Epoch Time: 1565250300.750794000 seconds
// 两帧之间的时间间隔
[Time delta from previous captured frame: 0.000326000 seconds]
// 捕获到显示的时间间隔
[Time delta from previous displayed frame: 0.126423000 seconds]
// 此帧与第一帧的时间间隔
[Time since reference or first frame: 197.144051000 seconds]
// 帧号
Frame Number:
// 帧长度
Frame Length: bytes ( bits)
// 捕获的帧长度
Capture Length: bytes ( bits)
// 帧是否标记
[Frame is marked: False]
// 帧是否忽略
[Frame is ignored: False]
// 帧内封装的协议层次结构
[Protocols in frame: eth:ethertype:ip:tcp:http]
// 着色标记的协议
[Coloring Rule Name: HTTP]
// 着色规则显示的字符串
[Coloring Rule String: http || tcp.port == || http2]

第二层:Ethernet II (数据链路层以太网帧头部信息)

 // 源MAC地址:TexasIns_ce:a9:4b (68:c9:0b:ce:a9:4b)
// 目标MAC地址:AplexTec_0d:4e (40:d8:55:16:ad:4e)
Ethernet II, Src: AsustekC_4d:bc:f2 (:8b:cd:4d:bc:f2), Dst: Hangzhou_91:be:b8 (d4::fe::be:b8)
// 目标MAC地址
Destination: Hangzhou_91:be:b8 (d4::fe::be:b8)
// 源MAC地址
Source: AsustekC_4d:bc:f2 (:8b:cd:4d:bc:f2)
// IP类型
Type: IPv4 (0x0800)

第三层:Internet Protocol Version 4(以太网协议层)

 // IPv4 协议,源IP:192.168.1.50, 目的IP:111.202.102.36
Internet Protocol Version , Src: 192.168.1.50, Dst: 111.202.102.36
// 版本4
.... = Version:
// 头长度20字节
.... = Header Length: bytes ()
// 差分服务字段
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
// 总长度
Total Length:
// 鉴别
Identification: 0x90c2 ()
// 标志
Flags: 0x4000, Don't fragment
// 生存期
Time to live:
// 协议名称
Protocol: TCP ()
// 头部校验和
Header checksum: 0x0000 [validation disabled]
// 头部校验和检测状态
[Header checksum status: Unverified]
// 源IP
Source: 192.168.1.50
// 目标IP
Destination: 111.202.102.36

第四层:Transmission Control Protocol(传输控制协议)

 // 传输控制协议,源端口:4434,目标端口:80,序号1,确认号:1,长度:453
Transmission Control Protocol, Src Port: , Dst Port: , Seq: , Ack: , Len:
// 源端口:4434
Source Port:
// 目标端口:80
Destination Port:
// 流索引
[Stream index: ]
// TCP段长度
[TCP Segment Len: ]
// 序号
Sequence number: (relative sequence number)
// 下一个序号
[Next sequence number: (relative sequence number)]
// 确认号
Acknowledgment number: (relative ack number)
// 头部长度
.... = Header Length: bytes ()
// 标记
Flags: 0x018 (PSH, ACK)
// 窗口大小
Window size value:
// 计算窗口大小
[Calculated window size: ]
// 窗口大小乘积因子
[Window size scaling factor: ]
// 校验和
Checksum: 0x99a8 [unverified]
// 校验和监测状态
[Checksum Status: Unverified]
// 紧急指针
Urgent pointer:
[SEQ/ACK analysis]
[Timestamps]
// TCP负载
TCP payload ( bytes)

第五层:HyperText Transfer Protocol(超文本传输协议)

 // 超文本传输协议(HTML)
Hypertext Transfer Protocol
// POST请求
POST /q HTTP/1.1\r\n
// 缓存控制
Cache-Control: no-cache\r\n
// 连接类型
Connection: Keep-Alive\r\n
// 编辑注解
Pragma: no-cache\r\n
// 用户代理
User-Agent: SESC\r\n
// 内容长度
Content-Length: \r\n
[Content length: ]
// 主机
Host: get.sogou.com\r\n
\r\n
// 完整请求地址
[Full request URI: http://get.sogou.com/q]
[HTTP request /]
// 前一请求所在帧
[Prev request in frame: ]
// 响应帧
[Response in frame: ]
// 下一请求帧
[Next request in frame: ]
// 文件数据
File Data: bytes
// 数据
Data ( bytes)

HTTP协议的内容根据请求情况会有所不同,需要具体情况具体分析。

Wireshark教程之二:Wireshark捕获数据分析的更多相关文章

  1. RabbitMQ系列教程之二:工作队列(Work Queues)(转载)

    RabbitMQ系列教程之二:工作队列(Work Queues)     今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题.   (使用.NET 客户端 进行事例演示)          ...

  2. C++入门教程之二:变量

    C++入门教程之二:变量 变量,顾名思义,意思是变化的量.变量的定义是计算机语言中能储存计算结果或能表示值的抽象概念.一个基本的程序需要变量,因此变量是程序设计中的一大重点. 变量基本结构 var_t ...

  3. 微信小程序入门教程之二:页面样式

    这个系列的上一篇教程,教大家写了一个最简单的 Hello world 微信小程序. 但是,那只是一个裸页面,并不好看.今天接着往下讲,如何为这个页面添加样式,使它看上去更美观,教大家写出实际可以使用的 ...

  4. Apache Shiro系列教程之二:十分钟上手Shiro

    在本教程中,我们会写一个简单的.仅仅输出一些内容命令行程序,从而对Shiro有一个大体的感觉. 一.准备工作 本教程需要Java1.5+,并且我们用Maven生成项目,当然Maven不是必须的,你也可 ...

  5. Zabbix3.0基础教程之二:item、trigger、action、graph配置

    一.Zabbix监控报警过程 在一次完整的Zabbix配置中,需要涉及到的术语有以下几项: 1.host groups:主机组,按生产需求将功能类别相近或相同的主机进行分组,便于管理. 2.host: ...

  6. Fiddler 教程之:Fiddler捕获会话

    1 Fiddler的工作原理 Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888.当Fiddler退出的时候它会自动注销,这样就不会影响别的程序.不过 ...

  7. RabbitMQ系列教程之二:工作队列(Work Queues)

        今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题.   (使用.NET 客户端 进行事例演示)          在第一个教程中,我们编写了一个从命名队列中发送和接收消息的程序. ...

  8. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之二

    好了,废话也不多说,咱们直接来看看这款MVC的造型——你可能会大吼:“这……这特么的都是些什么鬼?” 靠,告诉你吧,我也不知道这都是些什么鬼,反正以前我是没有见过这样的MVC.咦,老纸的config文 ...

  9. SQLAlchemy ORM教程之二:Query

    from:https://www.jianshu.com/p/8d085e2f2657 这是继SQLAlchemy ORM教程之一:Create后的第二篇教程.在上一篇中我们主要是解决了如何配置ORM ...

随机推荐

  1. MySQL数据物理备份之lvm快照

    使用lvm快照实现物理备份 优点: 几乎是热备(创建快照前把表上锁,创建完后立即释放) 支持所有存储引擎 备份速度快 无需使用昂贵的商业软件(它是操作系统级别的) 缺点: 可能需要跨部门协调(使用操作 ...

  2. Lua语法要点2

    [Lua语法要点2] 1.Lua函数 function 可以添加 local 关键字.添加后为局部函数,不添加(默认)为全局函数.return 可以返回多个返回值,以, 分隔. 使用 ... 来表示变 ...

  3. hdu6222——佩尔方程&&大数__int128

    题意 给定一个整数 $N$($1 \leq N \leq 10^{30}$),求最小的整数 $t$,要求 $t \geq N$,使得边长为 $t-1, t, t+1$ 的三角形面积为整数. 分析 根据 ...

  4. Pandas | 24 常用图形绘制

    基本绘图:绘图 Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现. import pandas as pd import numpy as n ...

  5. vue 工具函数的封装 时间格式化函数

    时间代码格式化工具函数的封装 小伙伴们,多封点工具函数,多封装点公共组件,多写点公共样式,照顾下互联网行业的新人把....~~~~~ /** yyyymmdd(new Date) -> &quo ...

  6. 有这样一个url=http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段js程序提取url 中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中, 如{a:'1',b:'2',c:'',d:'xxx',e:undefined}

    第一种方法: console.log(getJson(url)); function getJson(url){ var obj={}; var arr=url.split("?" ...

  7. 以py脚本形式ORM操作 及 django终端打印sql语句的设置

    1. 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers': False ...

  8. C++2.0新特性(三)——<=default,=delete、alias(别名)、noexcept、override、final、以及和const对比>

    一.=default,=delete 1.首先我们要回顾一下类默认函数的概念: C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数: (1)构造函数(A()).(2)析 ...

  9. AppDomin学习与分享

    最近学习并分享了appdomin的一些东西,以前没怎么记录过,现在记录一下吧2016-03-17 什么是AppDomin •全称:Application Domin(应用程序域) •定义:AppDom ...

  10. 用Python 绘制分布(折线)图

    用Python 绘制分布(折线)图,使用的是 plot()函数. 一个简单的例子: # encoding=utf-8 import matplotlib.pyplot as plt from pyla ...