を使用してパケットをキャプチャしていますlibpcap。ここで
指定されているペイロード サイズを計算していますsize_payload = ntohs(ip->ip_len) - (size_ip + size_tcp);
。現在、パケットの場合、size_payload1228、イーサネット ヘッダーは 14 バイト、IP ヘッダーは 20 バイト、TCP ヘッダーは 32 バイトです。header.caplenとはheader.len1514 バイトです。size_payload+size_ip+size_tcp+size_ethernetに等しいべきではありませんheader.caplenか? また、tcpdump を使用して同じパケットをダンプすると、キャプチャの長さは のように表示され1514ます。これらが異なるのはなぜですか?ntohs(ip->ip_len)私は等しいと予想しheader.caplen、header.len
EDIT
私ntohs(ip->ip_len)はと等しいとheader.caplen思っていましたheader.len。ntohs(ip->ip_len) = 1280しかし、私が見つけたのはheader.caplen = header.len = 1514