我写了一个简单的源文件,它可以使用 C 中的 libpcap 库读取 pcap 文件。我可以一个一个地解析数据包并分析它们。我希望能够推断出我解析的 TCP 数据包是否是 TCP 重传。在广泛搜索网络后,我得出结论,为此,我需要跟踪流量行为,这意味着还要分析以前收到的数据包。
我真正想要实现的是,在基本层面上,tcp.analysis.retransmission过滤器在wireshark中所做的事情。
这是一个 MRE,它读取 pcap 文件并分析通过 IPv4 发送的 TCP 数据包。该功能find_retransmissions是分析数据包的地方。
#include <pcap.h>
#include <stdio.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <net/ethernet.h>
#include <string.h>
void process_packet(u_char *,const struct pcap_pkthdr * , const u_char *);
void find_retransmissions(const u_char * , int );
int main()
{
pcap_t *handle;
char errbuff[PCAP_ERRBUF_SIZE];
handle = pcap_open_offline("smallFlows.pcap", errbuff);
pcap_loop(handle, -1, process_packet, NULL);
}
void process_packet(u_char *args,
const struct pcap_pkthdr * …Run Code Online (Sandbox Code Playgroud)