Linuxでlibpcapを使用してパケットをスニッフィングしています。各パケットで取得するヘッダーは次のようになります。
struct pcap_pkthdr {
struct timeval ts; /* time stamp */
bpf_u_int32 caplen; /* length of portion present */
bpf_u_int32 len; /* length this packet (off wire) */
};
さて、caplenはキャプチャしたデータの長さであり、lenはワイヤ上のパケットの長さであると私は理解しています。場合によっては(たとえば、pcapデバイスを開くときにsnaplenを低く設定しすぎる場合)、パケットの一部のみをキャプチャする場合があります。その長さは「caplen」ですが、「len」は元の長さです。したがって、caplenはlen以下である必要がありますが、lenより大きくなることはありません。
それは適切な理解ですか?一部のマシンではcaplen>lenを使用しています