Ping

乙太網有效負載如何僅最大 1500,而我可以用更大的數據包 ping?

  • November 21, 2018

就在最近我才知道乙太網的有效負載最大為 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 中不允許分片。

引用自:https://serverfault.com/questions/940834