1

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

4

2 回答 2

1

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

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

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

于 2012-03-18T18:38:28.233 回答
0

从手册页:

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

从我的代码:

如果(ntohs(以太网->ether_type)==0x0800)...

于 2012-04-03T06:47:22.480 回答