ICMP 与 MTU

最大传输单元(MTU):指由IP包头和数据部分组成的IP数据包长度。

常见的 MTU 设置为 1500。所以ICMP负载长度最大值为

MTU(1500字节) - IP首部长度(20字节)-ICMP首部长度(8字节) = 1472 字节

当ICMP负载长度超过1472字节,ICMP 负载会被分片。如下图所示:

ICMP 与 MTU_第1张图片

其中,帧354的大小为1480字节,等于ICMP最大负载长度(1472字节) + ICMP首部长度(8字节)

分片前ICMP负载长度为1513字节 = 1480字节 + 33 字节

对应的数据帧:

帧354的长度1514 = 以太网帧首部(14字节) + IP首部(20字节) + ICMP首部(8字节)+ ICMP 负载长度(1472字节)

帧355的长度67字节 = 以太网帧首部(14字节) + IP首部(20字节) + ICMP负载长度(33字节)

可见,帧355的长度67字节中不包含ICMP首部,使用scapy解析该数据包时找不到ICMP首部。

参考:

wireshark捕获IP分片数据包实践

ping 包长度及 MTU

你可能感兴趣的:(wireshark,ICMP)