を使用してパケットをキャプチャしていますlibpcap
。ここで
指定されているペイロード サイズを計算していますsize_payload = ntohs(ip->ip_len) - (size_ip + size_tcp);
。現在、パケットの場合、size_payload
1228、イーサネット ヘッダーは 14 バイト、IP ヘッダーは 20 バイト、TCP ヘッダーは 32 バイトです。header.caplen
とはheader.len
1514 バイトです。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