c - PCAP 以太类型返回

标签 c linux pcap tcpdump

我正在尝试识别我收到的数据包的以太网类型。以太类型ID为608,在Ethertype.h(libpcap 1.2.1)中没有对应的定义。大多数接收到的数据包都具有 8 的任一类型,这在 Ethertype.h 中也没有相应的定义。有没有人知道这背后的原因是什么,或者我应该联系 TCPDump 并提供错误报告。

最佳答案

您正在捕获的 pcap_tpcap_datalink() 的返回值是多少?

如果它不是 DLT_EN10MB(值为 1),则您的数据包不是以太网数据包,您不应将它们解析为以太网数据包。

如果是 DLT_EN10MB,那么它是十六进制 608 还是十进制 608?如果它是十进制的 608,那么它是一个长度字段而不是类型字段。这同样适用于 8,它是相同的十进制或十六进制,因此是长度值而不是类型值。

关于c - PCAP 以太类型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760837/

相关文章:

c++ - Winpcap - pcap_next_ex 与 pcap_loop

python - dpkt 无效的 tcpdump header 错误

c - 结构数组读取函数将所有数组值更改为最新输入 - C

c++ - c-icap 和附件文件

c - libpcap 丢弃来自特定 IP 的一些数据包

c - 如何使用文件描述符刷新写入?

Linux 将控制台输出写入文件

c - 如何将 char* 分配给函数内的结构成员?

c - 从缓冲区读取字符

c - fwrite() 阻止调用并且不写入文件