1. 测试机器,源 IP 地址为 10.21.28.110,目的 IP 地址为 10.6.0.24。
2. 使用 "ip.addr == 10.6.0.24 and icmp" 过滤规则定位数据封包。
如上图所示,Windows 中 ping 命令默认执行 4 次 ping 程序,所以 Wireshark 会抓到 8 个 ICMP 报文。
3. 观察第一个编号为 2066 的 Echo (ping) request 数据帧。
如上图所示,可以看到这个数据帧的结构是:
Ethernet II |
IP |
ICMP |
4. 观察 Ethernet II 数据帧的内容。
Ethernet II 数据帧的格式如下:
DA | SA | Type | Data | FCS |
DA: 该字段有 6 个字节,表示目的 MAC 地址。如上图所示,目的 MAC 地址为 30:37:a6:f6:5a:4f。
SA: 该字段有 6 个字节,表示源 MAC 地址。如上图所示,源 MAC 地址为 54:ee:75:25:33:fd。
Type: 该字段有 2 个字节,表示数据包的类型。如上图所示,类型的值为 0x0800,表示 Internet Protocol(IP)。
Data: 数据载荷。
FCS: 该字段有 4 个字节,表示帧校验序列,用于校验帧是否出错。该字段内容已被网络设备滤去,抓包软件已无法获取。
5. 观察 IP 数据包的内容。
如上图所示,可以看到 IP 数据包的信息:
Version: 4,表示 IPv4。
Header Length: 5, 表示 5 个以 32 bit 为单位的 word,即 20 bytes。
Time to live: 64, 生存时间。
Protocol: 1,表示 ICMP。
Source: 10.21.28.110,源 IP 地址。
Destination: 10.6.0.24,目的 IP 地址。
6. 观察 ICMP 数据包内容。
ICMP 数据包的格式如下:
Type | Code | Checksum |
Identifier | Seq Num | |
Data |
Type: 该字段有 1 个字节,表示特定类型的 ICMP 报文。
Code: 该字段有 1 个字节,进一步细分 ICMP 的类型。如上图所示,Type 的值为 8,Code 的值为 0,表示回显请求。
Checksum: 该字段有 2 个字节,表示校验和。
Identifier: 该字段有 2 个字节,用于匹配 Request/Reply 的标识符。
Seq Num: 该字段有 2 个字节,用于匹配 Request/Reply 的序列号。
Data: 数据载荷。