如果你留意过抓包文件后缀名的话,会发现有 pcap、cap、pcapng 这几种不同的后缀名。
为什么会有好几种类型呢?下面我来给你说道说道。
## pcap
这个是 libpcap 的格式,也是 tcpdump 和 Wireshark 等工具默认支持的文件格式。
pcap 格式的文件中除了报文数据以外,也包含了抓包文件的元信息,比如版本号、抓包时间、
每个报文被抓取的最大长度,等等。
## cap
cap 文件可能含有一些 libpcap 标准之外的数据格式,它是由一些 tcpdump 以外的抓包程序生成的。
比如 Citrix 公司的 netscaler 负载均衡器,它的 nstrace 命令生成的抓包文件,就是以.cap 为扩展名的。
这种文件除了包含 pcap 标准定义的信息以外,还包含了 LB 的前端连接和后端连接之间的 mapping 信息。
Wireshark 是可以读取这些.cap 文件的,
只要在正确的版本上。
## pcapng
pcap 格式虽然满足了大部分需求,但是它也有一些不足。比如,现在多网口的情况已经越
来越常见了,我们也经常需要从多个网络接口去抓取报文,那么在抓包文件里,
如果不把这些报文跟所属的网口信息展示清楚,那我们的分析,岂不是要张冠李戴了吗?
为了弥补 pcap 格式的不足,人们需要有一种新的文件格式,pcapng 就出现了。
有了它,单个抓包文件就可以包含多个网络接口上,抓取到的报文了。
我们可以看到,上图中右边的 pcapng 格式是包含报文的网络接口信息的,而左边的 pcap 就没有。
当然,pcapng 还有很多别的特性,比如更细粒度的报文时间戳、允许对报文添加注释、 更灵活的元数据,等等。
如果你是用版本比较新的 Wireshark 和 tshark 做抓包,默认生成的抓包文件就已经是 pcapng 格式了。