IPv6重复地址检测
重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其他的节点使用了该地址,尤其是在地址自动配置的时候,进行DAD检测是很必要的,一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址,此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组,ALL-NODES组播组和实验地址所对应的Solicited-Node组播组;
IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向一个自己将使用的试验地址所在的Solicited-Node组播组发送一个以该实验地址为请求的目标地址的NS报文,如果收到某个其他站点回应的NA报文,就证明该地址已经被网络上使用,节点不能使用该地址;
DAD检测过程:
Host A的IPv6地址为2000::1为新配置地址,即2000::1为Host A的实验地址,Host A向2000::1的Solicited-Node组播组发送一个以2000::1为请求目的地址的NS报文进行重复地址检测,由于2000::1并未正式指定,所以NS报文的源地址为未指定地址,当Host B收到该NS报文后,有两种处理方法:
- 如果Host B发现2000::1是自身的一个实验地址,则Host B放弃使用这个地址作为接口地址,并且不会发送NA报文;
- 如果Host B发现2000::1是一个已经正常使用的地址,那么Host B会向该地址的Solicited-Node组播组发送一个NA报文,该消息中包含2000::1,这样Host A收到这个消息就会发现自身的实验地址是重复的,从而弃用该地址;