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