【发布时间】:2012-04-03 14:47:22
【问题描述】:
我正在尝试识别我正在接收的数据包的以太类型。以太类型 ID 为 608,在 Ethertype.h(libpcap 1.2.1) 中没有对应的定义。大多数接收到的数据包的类型为 8,在 Ethertype.h 中也没有相应的定义。有没有人知道这背后的原因是什么,或者我应该联系 TCPDump 并提供错误报告。
【问题讨论】:
我正在尝试识别我正在接收的数据包的以太类型。以太类型 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,它是相同的十进制或十六进制,因此是长度值而不是类型值。
【讨论】:
来自手册页:
“ntohs() 函数将无符号短整数 netshort 从网络字节顺序转换为主机字节顺序。”。
来自我的代码:
如果(ntohs(ethernet->ether_type)==0x0800) ...
【讨论】: