Introducción
A finales de 1980, Van Jacobson, Steve McCanne y otros miembros del Grupo de Investigación para Redes del Laboratorio Nacional Lawrence Berkeley, desarrollaron el programa tcpdump para capturar y analizar trazas de red. El código para capturar el tráfico, utilizando mecanismos a bajo nivel en diversos sistemas operativos, además de leer y escribir trazas de red en un archivo, se incluyó posteriormente en una biblioteca de nombre libpcap.
Estructura General
Un archivo de captura inicia con una cabecera de archivo, seguido de cero o más Registros de Paquete, uno por paquete. Todos los campos en la Cabecera del Archivo y de los Registros de Paquete se guardarán siempre acorde a las características (little endian / big endian) del sistema de captura. Esto se refiere a todos los campos los cuales se guardan como números y abarcan dos o más octetos. La perspectiva de guardar el archivo en el formato nativo del host generador es más eficiente, pues evita la traducción de datos cuando se leen o escriben en el propio host, lo cual es el caso más común al generar o procesar capturas. Los paquetes son mostrados en el diagrama IETF tradicional, con los bits numerados de izquierda a derecha. La numeración de bits no refleja la posición del valor binario, pues los protocolos IETF están tradicionalmente en el orden de bytes de red big endian. El bit más significativo por lo tanto se encuentra a la izquierda en este diagrama, como si el archivo se almacenara en un sistema big endian.
Cabecera del Archivo
La Cabecera del Archivo tiene el siguiente formato
La longitud de la Cabecera del Archivo es de 24 octetos.
Magic Number (32 bits)
Major Version (16 bits)
Minor Version (16 bits)
Reserved1 (32 bits)
Reserved2 (32 bits)
SnapLen (32 bits)
LinkType (16 bits)
Frame Cyclic Sequence (FCS) present (4 bits)
Registro del Paquete
Un Registro del Paquete es un contenedor estándar para almacenar paquetes proviniendo desde la red.
La longitud de la Cabecera del Paquete es de 16 Octetos
Timestamp (Seconds) and Timestamp (Microseconds or nanoseconds)
Captured Packet Length (32 bits)
Original Packet Length (32 bits)
Packet Data
Limitaciones
El archivo PCAP es un archivo plano simple sin índice ni extensibilidad. Los archivos PCAP nunca fueron diseñados para gestionar capturas de paquetes mayores a algunos cientos de MB. Más allá de este punto, leer, filtrar, y buscar en un archivo PCAP puede convertirse en una tarea lenta y tediosa, como se podrá comprobar quien haya abierto un archivo PCAP de gran tamaño en Wireshark.
Los archivos PCAP no tienen una "Procedencia" integrada registrando como y donde se capturaron los paquetes. Esto puede facilitar perder el rastro de donde y cuando se capturaron los paquetes, así como del estado del sistema desde el cual capturaron en ese momento.
Fuentes:
https://www.ietf.org/archive/id/draft-gharris-opsawg-pcap-01.html
https://wiki.wireshark.org/Development/LibpcapFileFormat