libpcap数据包格式

发布时间 2023-08-18 11:12:44作者: Tom_2020

pcap文件格式如下:24字节文件头+( 16字节pcap数据包信息+数据包)* n。

Libpcap的官方网站是http://www.tcpdump.org/,该项目和Tcpdump项目是同一个团队维护。

Libpcap是一个平台独立的数据包捕获开发包,制定了数据包离线存储的事实标准。接下来我们就介绍一下该标准。

文件头说明:

1、标识位:32位的,这个标识位的值是16进制的 0xa1b2c3d4。
2、主版本号:16位, 默认值为0x2。
3、副版本号:16位,默认值为0x04。
4、区域时间:32位,实际上该值并未使用,因此可以将该位设置为0。
5、精确时间戳:32位,实际上该值并未使用,因此可以将该值设置为0。
6、数据包最大长度:32位,该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535;例如:想获取数据包的前64字节,可将该值设置为64。
7、链路层类型:32位, 数据包的链路层包头决定了链路层的类型。

以下是数据值与链路层类型的对应表
0 BSD loopback devices, except for later OpenBSD
1 Ethernet, and Linux loopback devices 以太网类型,大多数的数据包为这种类型。
6 802.5 Token Ring
7 ARCnet
8 SLIP
9 PPP
10 FDDI
100 LLC/SNAP-encapsulated ATM
101 raw IP, with no link
102 BSD/OS SLIP
103 BSD/OS PPP
104 Cisco HDLC
105 802.11
108 later OpenBSD loopback devices (with the AF_value in network byte order)
113 special Linux cooked capture
114 LocalTalk

数据包头

说明:
1、时间戳,包括:
秒计时:32位,一个UNIX格式的精确到秒时间值,用来记录数据包抓获的时间,记录方式是记录从格林尼治时间的1970年1月1日 00:00:00 到抓包时经过的秒数;
微秒计时:32位, 抓取数据包时的微秒值。

2、数据包长度:32位 ,标识所抓获的数据包保存在pcap文件中的实际长度,以字节为单位。

3、数据包实际长度: 所抓获的数据包的真实长度,如果文件中保存不是完整的数据包,那么这个值可能要比前面的数据包长度的值大。