2012-12-05 19 views
0

我试图开发和Linux的基于PC的参考RFC 4861.NDP(ICMPv6报)执行:重复数据包通过内核

我创建了一个插座socket (AF_INET6, SOCK_RAW, IPPROTO_IPV6)实现NDP(邻居发现协议)发送。 NS/NA数据包(ipv6头+ icmpv6头+选项)由开发人员填写并发送。

在Wireshark中,我监测到我填充的NS数据包正在发送+内核发送自己的NS数据包并接收NA数据包。

所以我很困惑,陷在我的工作中。任何人都可以请帮忙解释一下

  1. 为什么这个重复数据包是由内核自己生成的?
  2. 如果内核处理ICMPv6数据包,这是NDP应该开发和实施的场景吗?

回答

3

内核已经实现了NDP,所以开发人员不需要,就像你没有为IPv4实现ARP一样。

如果你仍然想实现ND(例如因为它是一个分配的学校项目),你将不得不找到一种方法在内核中禁用它(可能会删除代码并重新编译)。

+0

很好的编辑。谢谢bortzmeyer! –

+0

谢谢。我将尽快更新 –