使用 Wireshark 选择需要抓包的网络方式,并设置过滤器条件,当有数据通信后即可抓到对应的数据包,这里将分析其每一帧数据包的结构。
以HTTP协议为例,一帧数据包一般包括以下几个部分:
- Frame:物理层的数据帧情况。
- Ethernet II :数据链路层以太网帧头部信息。
- Internet Protocol Version 4:以太网协议层。
- Transmission Control Protocol:传输控制协议。
- HyperText Transfer Protocol:超文本传输协议。
对于各种协议而言,前三层基本一样,第四层开始就可以出现TCP, UDP 协议,第五层就有HTTP 应用层协议等。
第一层:Frame:(物理层)
1 // 第8056帧,有507个字节在线,共4056位,实际在接口0上捕获到507个字节
2 Frame 8056: 507 bytes on wire (4056 bits), 507 bytes captured (4056 bits) on interface 0
3 // 接口ID:0
4 Interface id: 0 (\Device\NPF_{7920DB7B-B8DB-417F-8C85-72E6DCCD61C5})
5 // 封装类型
6 Encapsulation type: Ethernet (1)
7 // 到达时间
8 Arrival Time: Aug 8, 2019 15:45:00.750794000 中国标准时间
9 // 包偏移量
10 [Time shift for this packet: 0.000000000 seconds]
11 // 新纪元时间
12 Epoch Time: 1565250300.750794000 seconds
13 // 两帧之间的时间间隔
14 [Time delta from previous captured frame: 0.000326000 seconds]
15 // 捕获到显示的时间间隔
16 [Time delta from previous displayed frame: 0.126423000 seconds]
17 // 此帧与第一帧的时间间隔
18 [Time since reference or first frame: 197.144051000 seconds]
19 // 帧号
20 Frame Number: 8056
21 // 帧长度
22 Frame Length: 507 bytes (4056 bits)
23 // 捕获的帧长度
24 Capture Length: 507 bytes (4056 bits)
25 // 帧是否标记
26 [Frame is marked: False]
27 // 帧是否忽略
28 [Frame is ignored: False]
29 // 帧内封装的协议层次结构
30 [Protocols in frame: eth:ethertype:ip:tcp:http]
31 // 着色标记的协议
32 [Coloring Rule Name: HTTP]
33 // 着色规则显示的字符串
34 [Coloring Rule String: http || tcp.port == 80 || http2]
第二层:Ethernet II (数据链路层以太网帧头部信息)
1 // 源MAC地址:TexasIns_ce:a9:4b (68:c9:0b:ce:a9:4b)
2 // 目标MAC地址:AplexTec_0d:4e (40:d8:55:16:ad:4e)
3 Ethernet II, Src: AsustekC_4d:bc:f2 (70:8b:cd:4d:bc:f2), Dst: Hangzhou_91:be:b8 (d4:61:fe:91:be:b8)
4 // 目标MAC地址
5 Destination: Hangzhou_91:be:b8 (d4:61:fe:91:be:b8)
6 // 源MAC地址
7 Source: AsustekC_4d:bc:f2 (70:8b:cd:4d:bc:f2)
8 // IP类型
9 Type: IPv4 (0x0800)
第三层:Internet Protocol Version 4(以太网协议层)
1 // IPv4 协议,源IP:192.168.1.50, 目的IP:111.202.102.36
2 Internet Protocol Version 4, Src: 192.168.1.50, Dst: 111.202.102.36
3 // 版本4
4 0100 .... = Version: 4
5 // 头长度20字节
6 .... 0101 = Header Length: 20 bytes (5)
7 // 差分服务字段
8 Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
9 // 总长度
10 Total Length: 493
11 // 鉴别
12 Identification: 0x90c2 (37058)
13 // 标志
14 Flags: 0x4000, Don't fragment
15 // 生存期
16 Time to live: 64
17 // 协议名称
18 Protocol: TCP (6)
19 // 头部校验和
20 Header checksum: 0x0000 [validation disabled]
21 // 头部校验和检测状态
22 [Header checksum status: Unverified]
23 // 源IP
24 Source: 192.168.1.50
25 // 目标IP
26 Destination: 111.202.102.36
第四层:Transmission Control Protocol(传输控制协议)
1 // 传输控制协议,源端口:4434,目标端口:80,序号1,确认号:1,长度:453
2 Transmission Control Protocol, Src Port: 4434, Dst Port: 80, Seq: 1, Ack: 1, Len: 453
3 // 源端口:4434
4 Source Port: 4434
5 // 目标端口:80
6 Destination Port: 80
7 // 流索引
8 [Stream index: 105]
9 // TCP段长度
10 [TCP Segment Len: 453]
11 // 序号
12 Sequence number: 1 (relative sequence number)
13 // 下一个序号
14 [Next sequence number: 454 (relative sequence number)]
15 // 确认号
16 Acknowledgment number: 1 (relative ack number)
17 // 头部长度
18 0101 .... = Header Length: 20 bytes (5)
19 // 标记
20 Flags: 0x018 (PSH, ACK)
21 // 窗口大小
22 Window size value: 32768
23 // 计算窗口大小
24 [Calculated window size: 262144]
25 // 窗口大小乘积因子
26 [Window size scaling factor: 8]
27 // 校验和
28 Checksum: 0x99a8 [unverified]
29 // 校验和监测状态
30 [Checksum Status: Unverified]
31 // 紧急指针
32 Urgent pointer: 0
33 [SEQ/ACK analysis]
34 [Timestamps]
35 // TCP负载
36 TCP payload (453 bytes)
第五层:HyperText Transfer Protocol(超文本传输协议)
1 // 超文本传输协议(HTML)
2 Hypertext Transfer Protocol
3 // POST请求
4 POST /q HTTP/1.1\r\n
5 // 缓存控制
6 Cache-Control: no-cache\r\n
7 // 连接类型
8 Connection: Keep-Alive\r\n
9 // 编辑注解
10 Pragma: no-cache\r\n
11 // 用户代理
12 User-Agent: SESC\r\n
13 // 内容长度
14 Content-Length: 719\r\n
15 [Content length: 719]
16 // 主机
17 Host: get.sogou.com\r\n
18 \r\n
19 // 完整请求地址
20 [Full request URI: http://get.sogou.com/q]
21 [HTTP request 47/57]
22 // 前一请求所在帧
23 [Prev request in frame: 5904]
24 // 响应帧
25 [Response in frame: 5910]
26 // 下一请求帧
27 [Next request in frame: 5912]
28 // 文件数据
29 File Data: 719 bytes
30 // 数据
31 Data (719 bytes)
HTTP协议的内容根据请求情况会有所不同,需要具体情况具体分析。
螃蟹在剥我的壳,笔记本在写我,漫天的我落在枫叶上雪花上,而你在想我。 --章怀柔