C 以太返回

C 以太返回,c,linux,pcap,tcpdump,C,Linux,Pcap,Tcpdump,我正在尝试识别我正在接收的数据包的以太类型。乙醚类型ID为608,在Ethertype.h(libpcap 1.2.1)中没有相应的定义。接收到的大多数数据包都有一个类型为8的任意一个数据包,在Ethertype.h中也没有相应的定义。是否有人知道这背后的原因,或者我是否应该向TCPDump提供错误报告。您正在捕获的pcap\u t上的pcap\u datalink()的返回值是多少 如果它不是DLT_EN10MB(值为1),则您的数据包不是以太网数据包,您不应该将其解析为以太网数据包 如果它是

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

您正在捕获的
pcap\u t
上的
pcap\u datalink()
的返回值是多少

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


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

要捕获的
pcap\u t
上的
pcap\u datalink()
的返回值是多少

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

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

来自手册页:

函数的作用是:将无符号短整数netshort从网络字节顺序转换为主机字节顺序

从我的代码:

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

来自手册页:

函数的作用是:将无符号短整数netshort从网络字节顺序转换为主机字节顺序

从我的代码:


如果(ntohs(ethernet->ethernet_type)==0x0800).

当我运行通过pcap_数据链路的检查时,捕获设备的文件处理程序确实返回1。就我发现的其余数据而言,它们都是十六进制的。更不用说我弄明白了,我需要在ethertype上使用ntohs()。当我通过pcap_数据链接运行检查时,捕获设备的文件处理程序确实返回1。就我发现的其余数据而言,它们都是十六进制的。更不用说我弄明白了,我需要在ethertype上使用ntohs()。