使用网络设备发送邻居广告消息

时间:2015-03-10 09:25:51

标签: linux-device-driver

我用套接字(AF_INET6,SOCK_DGRAM,0)发送2个字节(0x10 0x10),如果我使用多播地址ff02 :: 2,则消息为:

3333 00 02 a0b0  c0d0 e0f0 86dd 600  00 0a 111 fe80  00 00 00 a2b0  c0ff fed0 e0f0 fe80  00 00 00 2b0  52ff feff ff2 f1d4  3be 0a 81ef 1010

当我发送到单播地址而不是我的真实消息时,套接字发送ICMP邻居请求消息。我必须回复邻居广告,就像这样。

icmphReply.icmp6_type  = 0x88;
icmphReply.icmp6_code  = 0x00;
icmphReply.icmp6_router = 0;
icmphReply.icmp6_solicited = 1;
icmphReply.icmp6_override = 0;

如何通过网络设备发送消息?

感谢。

1 个答案:

答案 0 :(得分:0)

要使单播工作,您需要确定目标的链路层地址。在IPv6中,使用邻居发现协议。

当您将数据包发送到不在邻居缓存中的目标时,内核将执行邻居发现。您正在查看的邻居请求消息是该协议的第一步。邻居发现成功后,您将把数据包发送到目的地。当然,如果邻居发现失败,数据包将被丢弃。

在组播情况下,到链路层地址的映射是静态的,不需要进行邻居发现。您的数据包会立即发送到链路层组播组。

相关问题