
Eu queria saber por que o tcpdump tem um número mágico 262144
como comprimento padrão do instantâneo?
--snapshot-length=snaplen Snarf snaplen bytes de dados de cada pacote em vez do padrão de 262144 bytes. Pacotes truncados devido a um snapshot limitado são indicados na saída com ``[|proto]'', onde proto é o nome do nível de protocolo no qual o truncamento ocorreu. Observe que tirar instantâneos maiores aumenta o tempo necessário para processar pacotes e, efetivamente, diminui a quantidade de buffer de pacotes. Isso pode causar a perda de pacotes. Observe também que tirar snapshots menores descartará dados de protocolos acima da camada de transporte, o que perderá informações que podem ser importantes. As solicitações e respostas NFS e AFS, por exemplo, são muito grandes e muitos dos detalhes não estarão disponíveis se um tamanho de snapshot muito curto for selecionado. Se precisar reduzir o tamanho do instantâneo abaixo do padrão, você deve limitar o snaplen ao menor número que irá capturar as informações do protocolo de seu interesse. Definir o snaplen como 0 define-o para o padrão de 262144, para compatibilidade com versões anteriores mais recentes. versões do tcpdump.
Referência:página de manual
Responder1
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
Não há muito para isso. O loopback do Linux não é limitado por quadros de hardware e, portanto, tem um tamanho máximo bastante grande de 64k. Outros pacotes podem ser ainda maiores, aumentando algumas potências de dois para 256k.