pcap ethertype与ip版本不一致

时间:2017-11-26 02:42:20

标签: c++ linux pcap libpcap

我正在使用pcap在我的路由器上捕获ip(v4和v6)数据包。它工作得很好,但我注意到,有时以太网帧ethertype或{linux {1}}或{linux {1}}的{​​{1}}不能正确指示ip的版本它们包含的数据包。

我期待如果我得到LINKTYPE_ETHERNETLINKTYPE_LINUX_SLLethertype)的帧,那么它应该包含一个带有0x0800的ipv4数据包,如果我得到一个帧其ETHERTYPE_IPversion == 4ethertype),则应包含0x86DD的ipv6数据包。

大多数情况下,上述情况属实,但有时情况并非如此。我会得到一个ETHERTYPE_IPV6version == 6的帧,但不知何故它包含一个ipv6数据包,或者我得到一个ethertypeETHERTYPE_IP的帧,但它包含一个ipv4数据包。

我似乎听说过“ipv4 over ipv6”或“ipv6 over ipv4”但我不确切知道它们是如何工作的,或者它们是否适用于我的问题,但我不确定是什么导致了这种不一致。 / p>

修改
我认为我的实际问题是这种行为是否正常。如果是这样,我应该忽略ethertype字段,只需检查ip标头中的ETHERTYPE_IPV6字段,以确定它是ipv4还是ipv6。

0 个答案:

没有答案