IPV6的DAD检测算法实现
来源:互联网 发布:淘宝网买手机可靠吗 编辑:程序博客网 时间:2024/06/06 07:10
在LINUX内核中,已经实现了DAD检测的算法,但是内核并没有给出DAD检测的结果,如果想要手动的得到DAD检测的结果,或者给内核发消息启动DAD检测,意味着要面对大量的内核代码,而且这些代码不是独立的,总之,很有得研究一番。
也可以采用另外一种方式实现,就是socket编程,linux提供的socket接口允许我们自已组包,发送任意的数据,类型为AF_SOCKET,为什么要使用AF_SOCKET呢,RAW_SOCKET是RFC中推荐使用的,为什么不采用呢,原因是DAD检测有一个特别的规定,那就是发送NS的源地址必须为任意地址,而RAW_SOCKET只是处理ICMPV6报文中的各个部分,并不能指定源发送地址,因为icmpv6的报文是要通过IP模块的,内核会自动将一个接口的任意可用的IP地址做为源地址。如果要使用RAW_SOCKET发送任意IP源地址的报文,恭喜你,那是个大坑,又有得一番研究了。
使用AF_SOCKET有两个难点,一是CHECKSUM的计算,ICMPV6的CHECKSUM必须得自己计算了,去了解一下伪首部吧,应该不是很难的。
另一个是注意不要在ICMPV6中带源地址选项,为什么不能呢,对不起,解释不了,加了就是不行,你会收不到NA包,如果你的地址是冲突的话。
解决以上两个问题后,也恭喜你,你基本上完成了DAD算法了,因为剩下的无非是组包,填包,发包收包的工作了。
0 0
- IPV6的DAD检测算法实现
- IPv6下的DAD检测
- dad
- IPv6的重复地址检测
- SIFT检测算法的实现
- IPV6检测
- IPv6详解:SHA1算法实现及详解
- 音质检测的算法创新与实现
- Canny边缘检测算法的实现
- Canny边缘检测算法的实现
- Canny边缘检测算法的实现
- Canny边缘检测算法的实现
- 音质检测的算法创新与实现
- 实现图像的边沿检测算法设计
- Canny 边缘检测算法的C实现
- Canny边缘检测算法的实现
- 变化检测的基础算法与实现
- IPV6 TCP的WinSocket实现。
- ural 1143. Electric Path(凸包上最短哈密顿路径)
- 【OJ】(二)---G---手机定位
- LeetCode: Copy List with Random Pointer [138]
- CppCMS URL使用
- ipad5 越狱后 安装插件 导致无限重启
- IPV6的DAD检测算法实现
- Error Cannot Verify Database login information. [INS00104] : While Installing SAP BOBI 4.0 SP4 on SU
- LeetCode: Word Break [139]
- nyoj题目33 蛇形填数
- Virtualbox装Mac OSX 10.9笔记
- LeetCode: Word Break II [140]
- NBUT 1457 分块
- LeetCode: Linked List Cycle [141]
- OCP-1Z0-051-题目解析-第18题