Tcpdump
ping 和 tcpdump 的長度不同
我不知道為什麼我不能在 tcpdump 下看到正確的長度值,它應該是 $((9706-28)) = 9678,但我看到了9686。兩邊都有一個 MTU 設置為 9706,這是我正在使用的介面的最大值。
我執行命令:
ping -D -s $((**9706**-28)) 192.11.14.28 PING u1428-11 (190.11.14.28): 9678 data bytes **9686** bytes from 192.11.14.28: icmp_seq=0 ttl=64 time=0.249 ms **9686** bytes from 192.11.14.28: icmp_seq=1 ttl=64 time=0.421 ms
並檢查 tpcdump:
tcpdump -nevvvi mlnx0 192.11.14.29 > 192.11.14.28: ICMP echo request, id 23329, seq 1, length **9686** 11:41:35.881615 3a:db:46:ce:e8:b7 > 52:54:00:7d:3d:59, ethertype 802.1Q (0x8100), length 9724: vlan 100, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 9706)
您傳遞給 ping 命令的數據包大小不包括 8 字節 ICMP 標頭,僅包括有效負載大小。從手冊頁:
-s packetsize Specifies the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
因此,如果您指定有效負載大小為 9678,則線路上的數據包將為 9686 字節。