PCAP Ethertype返回

时间:2012-03-18 18:08:57

标签: c linux pcap tcpdump

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

从联系手册:

“ntohs()函数将无符号短整数netshort从网络字节顺序转换为主机字节顺序。”

从我的代码:

if(ntohs(ethernet-> ether_type)== 0x0800)...