Мы обнюхиваем пакеты, используя libpcap на linux Заголовок, который мы получаем для каждого пакета, выглядит следующим образом:
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) мы можем захватывать только части пакета, эта длина будет "caplen", а "len" - это исходная длина. Таким образом, caplen должен быть равен или меньше len, но не больше len.
Это правильное понимание? Мы используем капель > len на некоторых машинах.