我正在尝试识别我收到的数据包的以太网类型。以太类型ID为608,在Ethertype.h(libpcap 1.2.1)中没有对应的定义。大多数接收到的数据包都具有 8 的任一类型,这在 Ethertype.h 中也没有相应的定义。有没有人知道这背后的原因是什么,或者我应该联系 TCPDump 并提供错误报告。
最佳答案
您正在捕获的 pcap_t
上 pcap_datalink()
的返回值是多少?
如果它不是 DLT_EN10MB
(值为 1),则您的数据包不是以太网数据包,您不应将它们解析为以太网数据包。
如果是 DLT_EN10MB
,那么它是十六进制 608 还是十进制 608?如果它是十进制的 608,那么它是一个长度字段而不是类型字段。这同样适用于 8,它是相同的十进制或十六进制,因此是长度值而不是类型值。
关于c - PCAP 以太类型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760837/