Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

开发/PcapNg

pcapng(PCAP Next Generation Dump File Format)是用于保存抓包数据的文件格式,目标是补足传统 libpcap/pcap 格式在多接口、元数据、注释和时间精度等方面的限制。它不是一种网络协议,也不是 Wireshark 显示过滤器语法。

什么时候用:需要保存多网卡抓包、接口名称/描述、抓包过滤器、丢包统计、名称解析、包注释或更明确的时间戳分辨率时,优先使用 .pcapng。如果要把文件交给只支持传统 libpcap 的旧工具,再考虑导出为 .pcap

不要混淆:pcapng 是文件容器格式;pcap 是旧的抓包文件格式;Ethernet、IP、TCP 等才是被保存的数据包协议。

> 原 Wireshark Wiki 页面标注“严重过时”。下文保留原始页面中有用的格式说明、转换命令和历史限制,但不要把旧版本限制直接套用到当前 Wireshark。

pcapng 与 pcap 的区别

维度pcap / libpcappcapng
文件结构一个全局头,加一串包记录由多个块组成,例如 SHB、IDB、EPB、ISB、NRB
多接口抓包表达能力有限可为多个接口分别记录接口信息
元数据很少可保存接口名、接口描述、抓包过滤器、OS/应用信息、注释等
时间戳格式能力较简单可通过选项表达不同时间分辨率,例如微秒或纳秒
名称解析通常不随文件保存可使用 NRB 保存名称解析信息
兼容性老工具支持更普遍新工具支持更好;转成 pcap 时可能丢失 pcapng 元数据
推荐扩展名.pcap.pcapng

常见块

缩写名称用途
SHBSection Header Block标记一个 section 的开始,保存文件级信息和字节序信息
IDBInterface Description Block描述抓包接口,例如链路类型、snaplen、接口选项
EPBEnhanced Packet Block保存一条数据包记录及时间戳、接口编号等信息
SPBSimple Packet Block简化的数据包块
NRBName Resolution Block保存名称解析信息
ISBInterface Statistics Block保存接口统计信息,例如接收包数、丢包数等

示例文件类型

原页面列出过几类 pcapng 示例文件:

  • 较新的示例:dhcp.pcapngdhcp_little_endian.pcapngdhcp_big_endian.pcapngmany_interfaces.pcapng
  • 较旧的 ntar 示例:http.littleendian.ntartest001.ntartest010.ntar 等。
  • 有挑战性的示例:包含多个 SHB 的文件、大小端混合错误的文件、块长度不合法的文件、snaplen 范围外的数据等。

这些示例的价值主要在于测试读取器或解析器,而不是作为现代抓包文件写法的最佳实践。

在 Wireshark 工具中查看 pcapng 内容

可以使用 TShark 输出 pcapng 文件的详细结构和包内容:

text
tshark -V -Xread_format:"MIME Files Format" -r /path/to/a.pcapng

文件格式转换

从 pcap 转为 pcapng

text
editcap -F pcapng file.pcap file.pcapng
tshark -F pcapng -r file.pcap -w file.pcapng

适用场景:把旧格式抓包统一转换为 Wireshark 当前默认格式,或准备追加 pcapng 支持的元数据。

从 pcapng 转为 pcap

text
editcap -F libpcap -T ether file.pcapng file.pcap
tcpdump -r file.pcapng -w file.pcap

注意:从 pcapng 转成 pcap 时,通常需要指定 encapsulation type,例如 -T ether。转换后,多接口信息、注释、接口统计、名称解析等 pcapng 元数据可能无法保留。

合并文件

命令行示例:

text
mergecap -T ether -w new.pcapng file1.pcapng file2.pcapng

如果不同输入文件的封装类型不同,或者来自多接口且时间戳交错,旧版工具可能无法完整保留所有信息。遇到分析结果异常时,先检查输出文件的接口块和封装类型。

创建传统 pcap 文件

如果必须生成旧的 libpcap 格式,而不是 pcapng,可使用 dumpcap 的 -P 选项:

text
dumpcap -P -i eth0 -w file.pcap

旧实现记录的阅读方式

原页面包含大量 Wireshark 1.2、1.4、1.6、1.7、1.8 期间的实现记录,例如:

  • Wireshark 1.2.0 开始可以读写 pcapng;
  • 早期只支持部分块和部分选项;
  • dumpcap 逐步增加 SHB、IDB、EPB、ISB 以及若干 option 的写入;
  • Wireshark 1.8 起 pcapng 成为默认文件格式。

这些内容适合作为历史线索或兼容性排查背景,不适合作为当前版本能力清单。

相关页面

  • Libpcap
  • Wireshark
  • File

Imported from https://wiki.wireshark.org/Development/PcapNg on 2020-08-11 23:12:58 UTC

原始页面图片

icmp.jpg
icmp.jpg

相关 Wireshark Wiki 页面

网络分析技术档案