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