PCAPNG下一代转储文件格式 PCAP-DumpFileFormat

pcapng与pcap抓包格式比较图

本备忘录的状态

本文档是Internet草案,完全符合RFC 2026第10节的所有规定。

Internet-Drafts是Internet工程任务组(IETF)及其工作组的工作文档。请注意,其他组也可能将工作文档分发为Internet-Drafts。

互联网草案是有效期最长为六个月的草案文件,可能随时被其他文件更新,替换或废弃。使用互联网草稿作为参考资料或引用它们而不是“正在进行的工作”是不恰当的。

可以在http://www.ietf.org/ietf/1id-abstracts.txt上访问当前Internet草案列表 。

可以在http://www.ietf.org/shadow.html上访问Internet-Draft Shadow目录列表 。

此互联网草案将于2004年9月2日到期。

版权声明

版权所有©互联网协会(2004年)。版权所有。

抽象

本文档描述了将捕获的数据包转储到文件上的格式。这种格式是可扩展的,目前建议在libpcap / WinPcap数据包捕获库中实现。

更新

  • [2009年7月27日] Guy Harris:在附录B中添加了一些缺少保留的块类型。
  • [2009年7月27日] Guy Harris:修正了附录B中的拼写错误。标准化块的范围在0x00000000-0x7FFFFFFF范围内。
  • [2008年2月8日] Gianluca Varenni:更好的时间戳格式文档。将if_tsaccur选项重命名为if_tsresol。
  • [2007年10月22日] Gianluca Varenni:添加了与64位对齐相关的注释。指定选项长度字段是没有填充的长度。这里和那里都有错别字。添加了一些选项示例。
  • [2007年10月17日] Ulf Lamping:主要评论:“ISB”中的“接口ID”现在为32位。isb_starttime / isb_endtime取决于if_tsaccur。很多其他编辑......
  • [2007年10月8日] Ulf Lamping:修正了几个拼写错误。将块类型分为强制,可选,实验,过时。
  • [2006年9月14日] Gianluca Varenni:在AFDX封装信息块中添加了Arinc 429的块类型代码
  • [2006年5月23日] Gianluca Varenni:添加了IRIG时间戳块的块类型代码
  • [2006年4月23日] Gianluca Varenni:稍微清理了附录C:我们应该使用libpcap中的LINKTYPE_xxx值,而不是DLT_xxx值。修复了附录的介绍并添加了一些注释。
  • [2006年3月21日] Gianluca Varenni:添加了附录C的初步版本,详细说明了标准化链接类型。
  • [2006年3月21日] Gianluca Varenni:添加了附录B的初步版本,详细说明了标准块类型代码。
  • [2006年3月21日] Gianluca Varenni:在2.2节中添加了增强数据包块。修复了列表中的拼写错误:它是接口统计信息块,而不是捕获统计信息块。
  • [2006年3月21日] Gianluca Varenni:修正了文件中的一些小错字。
  • [2006年3月21日] Gianluca Varenni:修复了数据包阻止中的错误:选项pack_hash应该包含代码3。
  • [2006年3月21日] Gianluca Varenni:增加了增强数据包块的定义。
  • [2006年3月12日] Gianluca Varenni:在接口描述块中添加了选项if_tsoffset。


目录

1.   目标
2.   一般文件结构
    2.1。  一般块结构
    2.2。  块类型
    2.3。  逻辑块层次结构
    2.4。  物理文件布局
    2.5。  选项
    2.6。  数据格式
3.   块定义
    3.1。  Section Header Block(强制性)
    3.2。  接口说明块(强制)
    3.3。  增强数据包块(可选)
    3.4。  简单数据包块(可选)
    3.5。  数据包阻止(已过时!)
    3.6。  名称解析块(可选)
    3.7。  接口统计块(可选)
4。   实验块(值得进一步调查)
    4.1。  替代数据包块(实验性)
    4.2。  压缩块(实验)
    4.3。  加密块(实验)
    4.4。  固定长度块(实验)
    4.5。  目录块(实验)
    4.6。  交通统计和监测区块(实验)
    4.7。  事件/安全块(实验性)
5。   推荐文件名扩展名:.pcapng 
6.   如何添加供应商/域特定扩展名
7.   结论
附录A.  数据包块标志字
附录B.   标准化块类型代码
附录C.   标准化链路类型代码
附录D.   链路层标头
§   作者地址
§   知识产权和版权声明



 TOC 

1.目标

交换数据包跟踪的问题每天变得越来越重要; 遗憾的是,目前还没有针对此任务的标准解决方案。最受欢迎的数据包交换格式之一是由libpcap定义的格式,它相当陈旧,不适合某些现在的应用程序,特别是从可扩展性的角度来看。

本文档提出了一种用于转储数据包跟踪的新格式。正在实现以下目标:

  • 可扩展性:除了一些常见的功能之外,第三方应该能够使用专有扩展来丰富文件中嵌入的信息,这些扩展将被无法理解的工具忽略。
  • 可移植性:捕获跟踪必须包含独立于进行捕获的计算机的网络,硬件和操作系统读取数据所需的所有信息。
  • 合并/附加数据:应该可以在给定文件的末尾添加数据,并且生成的文件仍然必须是可读的。


 TOC 

2.一般文件结构


 TOC 

2.1。一般块结构

捕获文件按块组织,彼此相互附加以形成文件。所有块共享一种通用格式,如图1所示。


 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Block Type                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Block Total Length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                          Block Body                           /
/          /* variable length, aligned to 32 bits */            /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Block Total Length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Figure 1: Basic block structure. 
0                   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 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
|                           块类型                               | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           块总长度                             | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                           块体                                 / 
/                   /* 可变长度,对齐32位 */                      / 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           块总长度                             | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 图1:基本块结构。 

这些字段具有以下含义:

  • 块类型(32位):标识块的唯一值。最高有效位(MSB)等于1的值保留供本地使用。它们允许将私有数据保存到文件中并扩展文件格式。当前定义的类型列表可以在附录B中找到
  • 块总长度:此块的总大小(以字节为单位)。例如,没有主体的块的长度是12个字节。
  • 块体:块的内容。
  • 块总长度:此块的总大小(以字节为单位)。该字段是重复的,允许后向文件导航。

这种结构在所有块之间共享,可以轻松处理文件并跳过不需要的或未知的块。一些块可以包含其他块(嵌套块)。某些块是必需的,即转储文件如果不存在则无效,其他是可选的。

通用块结构允许在需要时定义其他块。不理解它们的解析器可以简单地忽略它们的内容。


 TOC 

2.2。块类型

目前标准化的块类型代码在附录B中规定,它们分为以下四类:

MANDATORY块必须在每个文件中至少出现一次:

可选块可以出现在文件中:

  • 增强型数据包阻止:它包含单个捕获的数据包或其中的一部分。它代表了原始数据包块的演变。
  • 简单数据包阻止:它包含一个捕获的数据包或其中的一部分,只有一小部分信息。
  • 名称解析块:它定义数据包转储中存在的数字地址和规范名称对应的映射。
  • 接口统计信息块:它定义了如何存储一些统计数据(例如丢包等),这对于解决捕获的条件非常有用。

OBSOLETE块不应出现在新写入的文件中(但留待此处参考):

实验块被认为是有趣的,但作者认为在定义之前它们应该得到更深入的讨论:

  • 替代数据包块
  • 压缩块
  • 加密块
  • 固定长度块
  • 目录块
  • 流量统计和监控块
  • 事件/安全块


 TOC 

2.3。逻辑块层次结构

这些块在它们相互引用时构建逻辑层次结构。图2以“树视图”的形式显示了当前定义的块的逻辑层次结构:

 

 


Section Header
|
+- Interface Description
|  +- Simple Packet
|  +- Enhanced Packet
|  +- Interface Statistics
|
+- Name Resolution
 Figure 2: Logical block Hierarchy of a pcapng file. 

 

 

Section Header 
| 
+  - 接口说明
| +  - 简单数据包
| +  - 增强数据包
| +  - 接口统计
| 
+  - 名称解析
 图2:pcapng文件的逻辑块层次结构。 

例如:每个捕获的数据包指的是特定的捕获接口,接口本身指的是特定的部分。


 TOC 

2.4。物理文件布局

该文件必须以Section Header Block开头。但是,转储中可以存在多个Section Header Block,每个块覆盖其后的数据,直到下一个(或文件末尾)。Section包括由两个Section Header Blocks(或Section Header Block和文件末尾)分隔的数据,包括第一个Section Header Block。

如果应用程序因版本号不同而无法读取Section,则必须跳过所有内容,直到下一个Section Header Block。请注意,为了正确跳过块直到下一节,所有块必须在开头有字段Type和Length。这是必须在块格式的未来版本中维护的强制性要求。

图3显示了典型的文件配置,其中包含一个覆盖整个文件的Section Header。


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0  |                      Data                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Figure 3: File structure example: Typical configuration with a single Section Header Block. 

 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0 | 数据| 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 图3:文件结构示例:具有单个Section Header Block的典型配置。 

图4显示了一个包含三个标头的文件,通常是文件串联的结果。仅了解文件格式1.0版的应用程序会跳过中间节并在第三个节标题后重新开始处理数据包。

 


|--   1st Section   --|--   2nd Section   --|--  3rd Section  --|
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0  |  Data   | SHB V1.1  |  Data   | SHB V1.0  |  Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Figure 4: File structure example: three Section Header Blocks in a single file. 

 

|  - 第1部分 -  |  - 第2部分 -  |  - 第3部分 -  | 
| | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0 | 数据| SHB V1.1 | 数据| SHB V1.0 | 数据| 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 图4:文件结构示例:单个文件中的三个Section Header Blocks。 

图5显示了一个与“经典libpcap”文件相当的文件 - 一个有用的捕获文件的最小值。它包含单个段头块(SHB),单个接口描述块(IDB)和一些增强包块(EPB)。

 


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | EPB | EPB |    ...    | EPB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Figure 5: File structure example: a pcapng file similar to a classical libpcap file. 

 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | EPB | EPB | ...... | EPB | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 图5:文件结构示例:类似于经典libpcap文件的pcapng文件。 (请参考最开始的pcapng与pcap对比图)

图6显示了一个复杂的示例文件。除了上面的最小文件之外,它还包含从三个接口捕获的数据包,还包括一些名称解析块(NRB)和接口统计数据块(ISB)。

 


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | IDB | IDB | EPB | EPB | NRB |    ...    | EPB | ISB | NRB | EPB | EPB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Figure 6: File structure example: more complex pcapng file. 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | IDB | IDB | EPB | EPB | NRB | ...... | EPB | ISB | NRB | EPB | EPB | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 图6:文件结构示例:更复杂的pcapng文件。 

最后一个例子应该表明,与传统的libpcap格式相比,块结构使文件格式非常灵活。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值