PCAPNG 与 PCAP——为什么接口元数据和时间戳精度重要
为需要捕获元数据、时间戳分辨率和可重现数据包证据的工程师提供 PCAPPNG 与 PCAP 的实用解释。
工程师通常将“.pcap”和“.pcapng”视为可互换的数据包捕获文件。它们是相关的,但它们并不相同。旧的 PCAP 格式简单且得到广泛支持。 PCAPNG可以承载更丰富的元数据,例如接口信息、时间戳解析、注释和捕获上下文。
对于常规观看来说,差异可能并不重要。对于修复、重写、证据移交和多界面分析来说,它非常重要。
经典 PCAP 为您提供什么
经典 PCAP 很简单:
- 全局标题
- 链接类型
- 数据包记录
- timestamp
- 捕获长度
- 原始长度
- 数据包字节数
这种简单性就是一种力量。很多工具都可以读取它。检查起来很容易。当捕获具有一种接口、一种链接类型并且不需要额外的上下文时,通常就足够了。
但简单性也意味着重要的证据可能存在于文件之外:接口名称、捕获过滤器、操作系统、时间戳分辨率假设以及有关捕获原因的注释。
PCAPNG 添加了什么
PCAPNG 支持基于块的结构。根据作者的不同,它可能包括:
- 节元数据
- 接口说明
- 每个接口的时间戳分辨率
- 接口名称和描述
- 数据包评论
- 捕获统计数据
- 多种接口
- 更丰富的选项字段
这在诊断复杂病例时非常有价值。如果捕获包含来自多个接口的流量,则必须了解哪个数据包来自哪个接口。如果时间戳分辨率不同,时序分析可能会发生变化。
为什么元数据在手术工作流程中很重要
修复或重写数据包捕获时,元数据是证据的一部分。从 PCAPNG 到 PCAP 的转换可能会丢弃有用的上下文。从 PCAP 到 PCAPNG 的转换可能会添加结构,但无法神奇地恢复从未存在过的元数据。
转换之前,询问:
- 捕获有多个接口吗?
- 接口名称重要吗?
- 是否需要评论或捕获统计数据?
- 时间戳分辨率已知吗?
- 下游工具需要经典 PCAP 吗?
- 转换会改变时间的解释方式吗?
正确的答案可能是“保留 PCAPNG”。它也可能是“导出 PCAP 副本以实现兼容性,但保留原始版本”。
时间戳解析很容易被忽略
时序分析取决于分辨率。记录微秒的捕获和记录纳秒的捕获在 UI 中看起来相似,但精度不同。 PCAPNG 可以使每个接口的时间戳解析变得明确。根据变体,经典 PCAP 的假设更加有限。
如果您正在调试延迟、重传计时、抖动或请求响应间隙,则应在编辑之前记录时间戳语义。
PCAP 手术适合的场合
PCAP 手术应将格式转换和元数据保存视为证据主导的操作。目标不是隐藏复杂性。目标是明确捕获内容以及编辑会丢失或更改的内容。
对于以格式为中心的报告,有用的输出包括:
- 输入格式
- 链接类型
- 数据包计数
- 时间戳分辨率
- 接口元数据(如果可用)
- 输出格式
- 保留或丢弃的元数据
- 转换原因
这让协议工程师确信文件是故意转换的。
如果您的查询是“pcapng vs pcap”或“将 pcapng 转换为 pcap”,答案不应停留在文件扩展名处。询问哪些证据必须在转变过程中保留下来。