pcap struct pcap pkthdr len vs caplen
мы нюхаем пакеты с помощью 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-это длина данных, которые мы захватили, пока лен-это длина пакета на проводе. В некоторых случаях (например, при установке snaplen слишком низко при открытии устройства pcap) мы можем захватить только части пакета, эта длина будет "caplen", а " len " - исходная длина. Таким образом, caplen должен быть равен или меньше чем лен, но не больше Лена.
Это правильное понимание ? Мы видим caplen > len на некоторых машинах
3 ответов
ваше понимание правильно, по крайней мере, на основе справочной страницы pcap.
caplen-это объем данных, доступных вам в захвате. лен был фактической длиной пакета.
Я не знаю ни одного случая, который дал бы вам caplen > len. Я обычно кажусь им равными, поскольку мой snaplen достаточно высок.
Да, ваше понимание правильно Caplen всегда меньше, чем Len . Иногда нам не нужно захватывать весь пакет . Но почему бы вам не захватить весь пакет, если у вас есть шанс ? Потому что в условиях интенсивного сетевого трафика это было бы не очень хорошей идеей . Разве мы не теряем драгоценные данные, если не захватим весь пакет, который появляется на проводе ? Нет. На самом деле это зависит от вашей цели, если вы просто хотите классифицировать пакеты на основе протоколов и приложения, которое оно предназначено К , U просто нужно около 14 байт( локальные сети ) плюс 20 байт ( ИС ) + плюс еще 20 ( ПТС), таким образом, вам видимо нужен только 54 байт данных для классификации пакетов на основе протоколов , так много нагрузки и время экономится на уменьшение размера обрабатываемых с pcappkthdr->лен pcappkthdr->caplen :)
Если заголовки в пакетах повреждены ( это означает, что если значения headerlength каким-то образом перепутались), то захваченная длина будет больше фактической длины пакет.