本文主要是介绍IPv6 ND协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
组播地址
组播MAC,33-33再加上IPv6组播地址的后32三位,注意不是MAC地址。
主机一般会加入FF02::1 这个组
而路由器会加入FF02::1和FF02::2这两个组。当配置了GUA地址后,他会加入被请求节点组播地址这个组,他是固定的FF02::1FF00/104,后面加上MAC的后24位组成。链路本地地址也是如此。
如下图
注:被请求节点组播地址主要用于地址重复检测功能,和邻居发现机制
ICMPv6协议可以为IPv6解决地址重复检测,MAC地址查询(类似ARP)功能。
当R1一个接口配置了GUA地址后,会发一个NS报文,源地址是::,目的地址是一个组播地址,(二层目的MAC也是一个组播MAC)即是你接口默认加入的那个组。例如3000::2,他加入的组为FF02::1:FF00:2,也就是它的目的地址。NS的TYPE为135,CODE为0。
然后,它自己本身就会回应一个NA,类似一点自问自答。 (华三设备会如此,华为不会自答)
注意,NS是往这个组播地址发。NA则是往这个链路上的所有节点发!
ND的TYPE为136,CODE为0。
当有地址冲突时,设备就会提示地址冲突。下图R2设备配置了一样的地址,它发出第一个NS之后,R1设备立刻就回应了NA,表示这个地址我已经占有了。
R1先配置,实验地址可用。
R2后配置,地址没有成功,于是标记DUPLICATE!(重复)
PS:
1.IPv6 地址的 tentative 状态:IPv6 地址处在这种状态时,地址的唯一性还没有确定,
收到的包都会被丢弃
2.当一个设备刚刚配置一个ipv6的GUA地址后,抓包如下,抓到一个链路本地地址和单播地址的DAD检测。从图可以看出,NS DAD检测先往被请求节点组播地址发,NA再向FF00::1本链路上所有节点发送。
RS和RA
华三和华为一样,默认接口关闭了自动获取地址,敲上命令 undo ipv6 nd ra halt 即可。
从上图抓包,可以看出主机获取了 8888::/64 6666::/64。RA报文的发送地址是是FF02::1,是本条链路上所有的节点,因为路由器和PC都可能用SLAAC获取IPv6地址。然而RS的发送地址是FF02::2,原因是去找路由器索要地址。
PS :
NS NA实现了重复地址检测和地址解析.
RS RA实现了路由器发现,无状态自动配置,前缀重编址,路由重定向。
DHCPv6和RA获取地址
所谓无状态地址获取,说白了就是地址是RA获取的,有状态是DHCPv6分配的,因为这样分配的地址DHCPv6服务器可以管理。
网关的的地址都是RA获取到的,手工除外。
根据三个置位,可以调节地址分配方式是RA获取还是DHCPv6获取:当A位置1,则使用RA分配的地址,DNS可以通过O置位来通过DHCPv6获取;当A位置0,表示不用路由器分配的地址,此时M置位1,表示地址和前缀都用DHCPv6获取,此时O置位如何都无所谓了。
DHCPv6分配地址和v4差不多,有solicit(discover)、advertise(offer)、request、reply(ack)。T1时间指的是优选时间的二分之一,T2时间值得是优选时间的十分之八,用于续租和重绑定,这一点和DHCPv4类似。
DUID 标识的是一台DHCPv6设备,IAID表示一个接口。
UDP端口号:546 客户端 547服务端或者中继。
PS: RA获取的地址和DHCPv6一样,都是有一个有效时间和优选时间
DHCPv6 PD(Prefix Delegation,前缀代理)自动配置:
这个是分配给内网的,说内网也不准确。当你家里拨号拿到了一个公网地址后,你可以向运营商请求一个PD前缀,这个前缀用于给你的家里一些设备(内网)分配GUA地址,让你的家里设备的v6地址全球可达。
PS:
为何需要link-local--在一个接口可以配置很多IPv6地址,所以学习路由就有可能出现很多下一跳。
所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。
注:笔记内容来自安徽合肥肯耐博培训机构谢斌老师。安徽肯耐博-IT认证培训考试中心 (openlabhf.com)
这篇关于IPv6 ND协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!