编辑
2024-06-18
网络
00

目录

1. pcap 文件结构
2. pcap 头部格式,24 字节
3. 数据包头部格式,16字节
4. 字节序

1. pcap 文件结构

| pcap 文件头 | 数据包头 | 数据包 | 数据包头 | 数据包 | ......

2. pcap 头部格式,24 字节

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 0 | magic_numver | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4 | major_version | minor_version | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | thiszone | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | sigfigs | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 16 | snaplen | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 | linktype | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • magic_numver: 4字节,标识pcap文件,同时指示字节序。值可为 0xa1b2c3d4 表示大端字节序,0xd4c3b2a1 表示小端字节序。(pcap 的一个官方变种支持纳秒时间戳,其magic字段为0xa1b23c4d )
  • major_version,minor_version: 各2字节,pcap文件版本号,当前为 2.4
  • thiszone: 4字节,packet 头中时间戳的本地时区与 UTC 时间之间的校正时间,实际上时间戳总是用 UTC 时间,所以此值总为0
  • sigfigs: 4字节,理论上此字段标识时间戳精度;实际上此值总为0
  • snaplen: 4字节,每个数据包的最大捕获长度
  • linktype: 4字节,标识链路层类型,1 标识以太网类型。还可以是其他类型如:PPP、令牌环等

3. 数据包头部格式,16字节

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 0 | ts_sec (Seconds) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4 | ts_usec (Microseconds or nanoseconds) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | incl_len (Captured Packet Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | org_len (Original Packet Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 16 / / / Packet Data / / variable length / / / +---------------------------------------------------------------+
  • ts_sec: 4字节,unix 时间戳(秒级)
  • ts_usec: 4字节,微秒时间戳或纳秒时间戳(以 ts_sec 进行偏移),此值不应超过1s
  • incl_len: 4字节,实际捕获并保存在文件中的数据包字节数。此值不应大于snaplen值。
  • org_len: 4字节,数据包被捕获时在网络中的长度

4. 字节序

  • 大端字节序: 高位在低地址,地位在高地址

  • 小端字节序: 低位在低地址,高位在高地址

  • 字节序的问题只会在一个数需要多个字节存储时才会存在

本文作者:letangers

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!