Формат libpcap - заголовок пакета - incl_len / orig_len - PullRequest
1 голос
/ 08 марта 2012

Структура заголовка пакета libpcap имеет 2 поля длины:

typedef struct pcaprec_hdr_s {
        guint32 ts_sec;         /* timestamp seconds */
        guint32 ts_usec;        /* timestamp microseconds */
        guint32 incl_len;       /* number of octets of packet saved in file */
        guint32 orig_len;       /* actual length of packet */
} pcaprec_hdr_t;

incl_len : количество байтов пакетных данных, фактически захваченных и сохраненных в файле.Это значение никогда не должно становиться больше значения orig_len или значения snaplen глобального заголовка.

orig_len : длина пакета в том виде, в каком он появился в сети при захвате.Если incl_len и orig_len различаются, фактически сохраненный размер пакета был ограничен snaplen.

Может кто-нибудь сказать мне, в чем разница между двумя полями длины?Мы сохраняем пакет целиком, тогда как эти 2 могут отличаться?

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Прочитав документацию в Wireshark wiki (http://wiki.wireshark.org/Development/LibpcapFileFormat) и изучив пример файла pcap, похоже, incl_len и orig_len обычно имеют одинаковое количество.Единственное время, когда они будут различаться, - это если длина пакета превышает размер snaplen, который указан в глобальном заголовке файла.

Я просто догадываюсь здесь, но я предполагаю, что snaplen определяетразмер статического буфера, используемого для захвата.В случае, если пакет был слишком велик для буфера захвата, это метод формата для сигнализации этого факта.документировано, что snaplen обычно равен 65535, что достаточно для большинства пакетов.Но документация предусматривает, что размер может быть ограничен пользователем.

0 голосов
/ 05 августа 2013

Может кто-нибудь сказать мне, в чем разница между двумя полями длины?Мы сохраняем пакет целиком, тогда как эти 2 могут отличаться?

Если вы сохраняете весь пакет, 2 не должен отличаться.

Однако, если, например, вы запускаете tcpdump или TShark или dumpcap или Wireshark из командной строки с захватом из командной строки и задаете небольшое значение с флагом «-s n », либо задаетенебольшое значение в параметре «Ограничить каждый пакет [ n ] байтов» в графическом интерфейсе Wireshark, тогда libpcap / WinPcap будет передано это значение и будет предоставляться только первый n байт.каждого пакета в программу, и весь пакет не будет сохранен.

Ограниченная «длина снимка» означает, что вы не видите все данные пакета, поэтому некоторый анализ может быть невозможен, но означает, чточто в ОС требуется меньше памяти для буферизации пакетов (поэтому может быть отброшено меньше пакетов) и меньше пропускной способности ЦП для копирования пакетных данных в приложение и меньше пропускной способности диска для сохранения пакетов на диск, если приложение их сохраняет(что также может уменьшить количество отброшенных пакетов), и для сохраненных пакетов требуется меньше места на диске.

...