我使用Tcpdump和libpcap(一个使用libpcap的程序)来捕获TCP数据包。我注意到有些数据包在最后填充/添加了额外的0x00字节。例如,虽然IP头中指示的IP长度表示长度为40字节,但tcpdump捕获46字节。我注意到TCP数据包末尾有6 0x00
个字节。
答案 0 :(得分:2)
他们不会添加这些字节。
机器发送数据包,因为以太网需要这样做。
一个40字节的IP数据包,当在以太网上发送时,将长54个字节,因为在IP报头和有效载荷之前有一个14字节的以太网报头。
但是,以太网上的最小数据包长度为60字节(不包括最后的4字节FCS)。这意味着数据包必须填充到60个字节,这意味着最后添加6个字节的填充。
(这就是为什么IP头有长度字段的原因之一 - 这样分组的接收者知道IP多少以及填充多少。)