了解pcap包头

时间:2016-11-15 12:01:28

标签: c networking pcap

有人可以解释我在C中如何使用 pcap数据包标题? 我找不到关于它的结构和使用方式的任何明确解释。

事实上,我不明白我们如何使用pcap库#include <pcap.h>

确实,我需要使用一个 struct pcap_pkthdr *header但我无法弄清楚如何使用它。

由于

1 个答案:

答案 0 :(得分:0)

Pcap为每个数据包定义一个标头。与pcap文件头一起,数据包标题将使您能够理解pcap转储中的数据。

struct pcap_file_header {
        bpf_u_int32 magic;
        u_short version_major;
        u_short version_minor;
        bpf_int32 thiszone; /* gmt to local correction */
        bpf_u_int32 sigfigs;    /* accuracy of timestamps */
        bpf_u_int32 snaplen;    /* max length saved portion of each pkt */
        bpf_u_int32 linktype;   /* data link type (LINKTYPE_*) */
};

struct pcap_pkthdr {
        struct timeval ts;      /* time stamp */
        bpf_u_int32 caplen;     /* length of portion present */
        bpf_u_int32 len;        /* length this packet (off wire) */
};

首先,您将拥有文件头,然后是所有捕获的数据包。 在C中,您可以读取24个字节的pcap转储,然后将这些字节映射到pcap文件头结构。在此之后,您可以开始阅读所有不同的数据包。请注意,有不同版本的pcap,我在这里写的内容并不适用于每个pcap转储。