【发布时间】:2016-01-27 20:15:40
【问题描述】:
我同时使用 Tcpdump 和 libpcap(一个使用 libpcap 的程序)来捕获 TCP 数据包。而且我注意到有一些数据包在最后填充/添加了额外的 0x00 字节。例如,虽然 IP 标头中指示的 IP 长度表示长度为 40 字节,但 tcpdump 捕获 46 字节。我注意到 TCP 数据包末尾有 6 个0x00 字节。
【问题讨论】:
我同时使用 Tcpdump 和 libpcap(一个使用 libpcap 的程序)来捕获 TCP 数据包。而且我注意到有一些数据包在最后填充/添加了额外的 0x00 字节。例如,虽然 IP 标头中指示的 IP 长度表示长度为 40 字节,但 tcpdump 捕获 46 字节。我注意到 TCP 数据包末尾有 6 个0x00 字节。
【问题讨论】:
他们不添加那些字节。
发送数据包的机器发送,因为这是以太网所必需的。
一个 40 字节的 IP 数据包在以太网上发送时,长度为 54 字节,因为在 IP 标头和有效负载之前有一个 14 字节的以太网标头。
但是,以太网上的最小数据包长度是 60 字节(不包括末尾的 4 字节 FCS)。这意味着必须将数据包填充到 60 字节,这意味着在末尾添加 6 字节的填充。
(这就是 IP 标头具有长度字段的原因之一 - 以便数据包的接收者知道多少是 IP,多少是填充。)
【讨论】: