
Мне было интересно, почему у tcpdump 262144
в качестве длины снимка по умолчанию используется магическое число?
--snapshot-length=snaplen Извлечь snaplen байт данных из каждого пакета вместо 262144 байт по умолчанию. Пакеты, усеченные из-за ограниченного снимка, обозначены в выводе как ``[|proto]'', где proto — это имя уровня протокола, на котором произошло усечение. Обратите внимание, что создание более крупных снимков увеличивает время обработки пакетов и, по сути, уменьшает объем буферизации пакетов. Это может привести к потере пакетов. Обратите внимание также, что создание более мелких снимков приведет к отбрасыванию данных из протоколов выше транспортного уровня, что приведет к потере информации, которая может быть важна. Например, запросы и ответы NFS и AFS очень велики, и большая часть подробностей будет недоступна, если выбрана слишком короткая длина снимка. Если вам необходимо уменьшить размер снимка ниже значения по умолчанию, вам следует ограничить snaplen наименьшим числом, которое позволит захватить интересующую вас информацию о протоколе. Установка snaplen на 0 устанавливает значение по умолчанию 262144 для обратной совместимости с более старыми версиями tcpdump.
Ссылка:страница руководства
решение1
https://github.com/the-tcpdump-group/tcpdump/blob/tcpdump-4.9/netdissect.h
/*
* Maximum snapshot length. This should be enough to capture the full
* packet on most network interfaces.
*
*
* Somewhat arbitrary, but chosen to be:
*
* 1) big enough for maximum-size Linux loopback packets (65549)
* and some USB packets captured with USBPcap:
*
* http://desowin.org/usbpcap/
*
* (> 131072, < 262144)
*
* and
*
* 2) small enough not to cause attempts to allocate huge amounts of
* memory; some applications might use the snapshot length in a
* savefile header to control the size of the buffer they allocate,
* so a size of, say, 2^31-1 might not work well.
*
* XXX - does it need to be bigger still?
*/
#define MAXIMUM_SNAPLEN 262144
Не так уж много. Linux loopback не ограничен аппаратными фреймами и поэтому имеет довольно большой максимальный размер в 64k. Другие пакеты могут быть даже больше, так что увеличьте пару степеней двойки до 256k.