DAD检测是通过发送NS报文,等待NA或者在进行DAD过程中收到了NS报文进行DAD检测的。
DAD检测发出的NS报文源地址必须是::,目的地址必须是solicit组播地址(ff02::1:ff开头),对端接收NS报文的时候以源地址::来判断是否是DAD的NS
下面的这张图()很好的说明了DAD的整个过程。
linux内核2.6.32的DAD检测函数为addrconf_dad_start,调用该函数后的第一步就是
1.调用函数addrconf_join_solict将接口加入solicited-note组播组中(上图中的第2步)
2.addrconf_dad_timer--->ndisc_send_ns发送NS报文(上图中的第4步)
3.ndisc_recv_ns--->addrconf_dad_failure(上图中的第3步)
4.ndisc_recv_na--->
addrconf_dad_failure (上图中的第5步)
阅读(3227) | 评论(0) | 转发(0) |