为什么libpcap / tcpdump在IP / TCP数据包末尾添加/填充'0x00'字节?

时间:2015-10-28 06:45:47

标签: libpcap tcpdump

我使用Tcpdump和libpcap(一个使用libpcap的程序)来捕获TCP数据包。我注意到有些数据包在最后填充/添加了额外的0x00字节。例如,虽然IP头中指示的IP长度表示长度为40字节,但tcpdump捕获46字节。我注意到TCP数据包末尾有6 0x00个字节。

1 个答案:

答案 0 :(得分:2)

他们不会添加这些字节。

机器发送数据包,因为以太网需要这样做。

一个40字节的IP数据包,当在以太网上发送时,将长54个字节,因为在IP报头和有效载荷之前有一个14字节的以太网报头。

但是,以太网上的最小数据包长度为60字节(不包括最后的4字节FCS)。这意味着数据包必须填充到60个字节,这意味着最后添加6个字节的填充。

(这就是为什么IP头有长度字段的原因之一 - 这样分组的接收者知道IP多少以及填充多少。)