pulmonar partido c pcap

partido - pcap wireshark



pcap struct pcap_pkthdr len vs caplen (3)

Estamos olfateando paquetes usando libpcap en linux. El encabezado que obtenemos en cada paquete se ve así:

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) */ };

Ahora, entiendo que caplen es la longitud de los datos que hemos capturado, mientras que len es la longitud del paquete en el cable. En algunos casos (por ejemplo, cuando se configura el valor de snaplen demasiado bajo al abrir el dispositivo pcap) es posible que capturemos solo partes del paquete, esa longitud será ''caplen'', mientras que ''len'' es la longitud original. Por lo tanto, caplen debe ser igual o menor que len, pero nunca mayor que len.

¿Es eso una comprensión adecuada? Estamos viendo caplen> len en algunas máquinas


Sí, tu entendimiento es correcto. Caplen siempre es menos que Len. A veces no necesitamos capturar todo el paquete. Pero, ¿por qué no capturarías todo el paquete si tuvieras una oportunidad? Porque en una red pesada el tráfico no sería una buena idea. ¿No estamos perdiendo datos valiosos si no capturamos todo el paquete que aparece en el cable? No. En realidad, depende de su propósito, si solo desea clasificar los paquetes según los protocolos y la aplicación a la que está destinado, solo necesita alrededor de 14 bytes (Ethernet) más 20 bytes (Ip) + más otros 20 (Tcp) por lo tanto, aparentemente solo necesita 54 bytes de datos para clasificar los paquetes según los protocolos, por lo que se ahorra mucha carga y tiempo al reducir el tamaño de procesamiento de pcappkthdr-> len a pcappkthdr-> caplen :)

Si los encabezados en los paquetes están dañados (lo que significa que si los valores de longitud de encabezado están mal hechos), la longitud capturada sería mayor que la longitud real del paquete.


Si caplen> len, eso es un error; ¿Qué versión de libpcap estás usando?


Tu entendimiento es correcto, al menos basado en la página man de pcap.

caplen es la cantidad de datos disponibles para usted en la captura. len era la longitud real del paquete.

No estoy al tanto de ningún caso que le pueda dar un aviso. Por lo general, me parece que son iguales, ya que mi snaplen es suficientemente alto.