Appearance
Appearance
pcapng(PCAP Next Generation Dump File Format)是用于保存抓包数据的文件格式,目标是补足传统 libpcap/pcap 格式在多接口、元数据、注释和时间精度等方面的限制。它不是一种网络协议,也不是 Wireshark 显示过滤器语法。
什么时候用:需要保存多网卡抓包、接口名称/描述、抓包过滤器、丢包统计、名称解析、包注释或更明确的时间戳分辨率时,优先使用 .pcapng。如果要把文件交给只支持传统 libpcap 的旧工具,再考虑导出为 .pcap。
不要混淆:pcapng 是文件容器格式;pcap 是旧的抓包文件格式;Ethernet、IP、TCP 等才是被保存的数据包协议。
> 原 Wireshark Wiki 页面标注“严重过时”。下文保留原始页面中有用的格式说明、转换命令和历史限制,但不要把旧版本限制直接套用到当前 Wireshark。
| 维度 | pcap / libpcap | pcapng |
|---|---|---|
| 文件结构 | 一个全局头,加一串包记录 | 由多个块组成,例如 SHB、IDB、EPB、ISB、NRB |
| 多接口抓包 | 表达能力有限 | 可为多个接口分别记录接口信息 |
| 元数据 | 很少 | 可保存接口名、接口描述、抓包过滤器、OS/应用信息、注释等 |
| 时间戳 | 格式能力较简单 | 可通过选项表达不同时间分辨率,例如微秒或纳秒 |
| 名称解析 | 通常不随文件保存 | 可使用 NRB 保存名称解析信息 |
| 兼容性 | 老工具支持更普遍 | 新工具支持更好;转成 pcap 时可能丢失 pcapng 元数据 |
| 推荐扩展名 | .pcap | .pcapng |
| 缩写 | 名称 | 用途 |
|---|---|---|
| SHB | Section Header Block | 标记一个 section 的开始,保存文件级信息和字节序信息 |
| IDB | Interface Description Block | 描述抓包接口,例如链路类型、snaplen、接口选项 |
| EPB | Enhanced Packet Block | 保存一条数据包记录及时间戳、接口编号等信息 |
| SPB | Simple Packet Block | 简化的数据包块 |
| NRB | Name Resolution Block | 保存名称解析信息 |
| ISB | Interface Statistics Block | 保存接口统计信息,例如接收包数、丢包数等 |
原页面列出过几类 pcapng 示例文件:
dhcp.pcapng、dhcp_little_endian.pcapng、dhcp_big_endian.pcapng、many_interfaces.pcapng。http.littleendian.ntar、test001.ntar 到 test010.ntar 等。这些示例的价值主要在于测试读取器或解析器,而不是作为现代抓包文件写法的最佳实践。
可以使用 TShark 输出 pcapng 文件的详细结构和包内容:
tshark -V -Xread_format:"MIME Files Format" -r /path/to/a.pcapngeditcap -F pcapng file.pcap file.pcapng
tshark -F pcapng -r file.pcap -w file.pcapng适用场景:把旧格式抓包统一转换为 Wireshark 当前默认格式,或准备追加 pcapng 支持的元数据。
editcap -F libpcap -T ether file.pcapng file.pcap
tcpdump -r file.pcapng -w file.pcap注意:从 pcapng 转成 pcap 时,通常需要指定 encapsulation type,例如 -T ether。转换后,多接口信息、注释、接口统计、名称解析等 pcapng 元数据可能无法保留。
命令行示例:
mergecap -T ether -w new.pcapng file1.pcapng file2.pcapng如果不同输入文件的封装类型不同,或者来自多接口且时间戳交错,旧版工具可能无法完整保留所有信息。遇到分析结果异常时,先检查输出文件的接口块和封装类型。
如果必须生成旧的 libpcap 格式,而不是 pcapng,可使用 dumpcap 的 -P 选项:
dumpcap -P -i eth0 -w file.pcap原页面包含大量 Wireshark 1.2、1.4、1.6、1.7、1.8 期间的实现记录,例如:
这些内容适合作为历史线索或兼容性排查背景,不适合作为当前版本能力清单。
Imported from https://wiki.wireshark.org/Development/PcapNg on 2020-08-11 23:12:58 UTC