前言
这是在项目上遇到的问题。因为项目的缘故,需要实现pcap捕包的功能,在使用后发现libpcap自身API使用比较复杂,就手写了一个API并尝试进行性能优化。部分代码在githuab上。pcapDumper
pcap文件格式
一个pcap文件的结构如下:
(图片来自博客)
如上图,一个pcap文件,有两个部分组成,一个Pcap 头部,和一堆包。其中每一个包都有两个字段,分别是Packet Head和 Packet Data。它们的数据结构如下:
struct _pcap_file_header {
uint32_t magic;
uint16_t version_major;
uint16_t version_minor;
int32_t thiszone; /* gmt to local correction */
uint32_t sigfigs; /* accuracy of timestamps */
uint32_t snaplen;