2

我正在使用libpcap. 我正在计算此处 size_payload = ntohs(ip->ip_len) - (size_ip + size_tcp);
给出的有效负载大小 现在,对于一个数据包,size_payload是 1228,以太网报头是 14 字节,IP 报头是 20 字节,TCP 报头是 32 字节。而header.caplenheader.len是 1514 字节。不size_payload+size_ip+size_tcp+size_ethernet应该等于header.caplen?此外,当我使用 tcpdump 转储相同的数据包时,捕获长度显示为1514. 为什么这些不同?我期望ntohs(ip->ip_len)等于header.caplenheader.len

编辑
我希望ntohs(ip->ip_len)等于header.caplenand header.len。但我发现的ntohs(ip->ip_len) = 1280header.caplen = header.len = 1514

4

1 回答 1

1

表示可以caplen捕获多少数据包,不一定实际捕获多少。您需要将该值与该字段进行比较。len

如果caplen >= len你知道你应该有整个数据包内容可用。否则,数据包捕获已被截断。

于 2012-09-28T19:44:38.087 回答