我正在使用boost asio icmp套接字来发送和接收ICMP数据包。我的代码基于boost示例: http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/example/icmp/ping.cpp
我试图在IPv6中做同样的事情。我可以发送类似于IPv4示例的ICMP消息(其他校验和计算和不同的ICMP类型),但是当我尝试接收回复时,我只收到ICMP标头而没有像示例中那样的IPv6标头。
我想,使用原始套接字会给我带来IPv6标头。 对于我的用例,我也希望收到IPv6标头,因为我需要源和目标地址(使用没有带有许多接口的有界套接字)。主要问题是:
为什么IPv4和IPv6中存在不同的行为? 操作系统:Ubuntu 16.04.2 内核版本:4.4.0
感谢您的帮助:)