就在最近我才知道以太网的有效载荷最大为 1500 字节 (mtu)。
我首先想到的是,我们可以 ping 比这大得多的数据包。所以我想 ping 数据包可能在某种程度上被碎片化了。所以我检查了一下 wireshark,发现它只有一个数据包,即使我 ping 的大小为 10,000 字节。
这背后的解释是什么?
更新:
即使使用支持高达 9000 字节的巨型以太网帧,我仍然可以 ping 17,000 字节,这仍然大于 9000。
答案1
根据@ColtonCat 的评论
答案很简单,因为发生了 IP 碎片。
示例:ping 大小为 2000 字节,mtu 最大为 1518,您可以在 wireshark 中看到 ping 请求和回复都被分割为 1518 和 566 字节的数据包。
计算如下:以太网头为 18 字节(src mac 6、dst mac 6、类型 2、FCS 4),IP 头为 20 字节,ICMP >> 46 为 8 字节。mtu 为 1518,因此剩下 1472 字节的数据(1518 - 46)。
对第二个碎片数据包进行同样的计算。
注意:Wireshark 不显示 FCS 字节。因此您只需减去 4。此外,所有这些都可能发生在 IPv4 中,因为在 IPv6 中不允许分段。