转载请注明以下内容:
作者:圈圈
ID:wljsghq
IPV6基础之邻居发现
写这篇文章的启发是在群里,看到一个小兄弟说有尝做一道IPV6的基础题,看到该消息想着自己也没啥事,就做一下,弄个饭钱也还行,然后就开始了。
拓扑图为题目的拓扑
拓扑图以上图为例子:
接下来就分析一下ipv6报文是怎么进行通信的
在IPV4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPV6中,同样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。
ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,普遍观点认为ARP定位为2.5层的协议。ND本身基于ICMPV6实现,以太网协议类型为0x86DD,即IPV6报文,IPV6下一个报头字段值为58,表示ICMPV6报文,由于ND协议使用的所有报文均封装在ICMPV6报文中,一般来说,ND被看作第3层的协议。在第三层完成地址解析,主要带来以下几个好处:
(1)地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
(2)可以使用三层的安全机制避免地址解析攻击
(3)使用组播方式发送请求报文,减少了二层网络的性能压力。
通过一个图展示请求跟通告的流程
IPV6邻居请求
以上图为例,当PC2访问PC1时,在PC1接口上抓包,看到的邻居发现报文是什么样的?
邻居请求
IPv6节点通过邻居请求NS(Neighbor Solicitation)消息可以得到邻居的链路层地址,检查邻居是否可达,也可以进行重复地址检测。
type值位135为NS报文
请求的目标的IP地址
请求目标IP地址是什么东西?
从上图来来讲,就是我路由器要去访问PC1,那么我知道PC1的的IP地址,但是我不知道他的MAC地址,我要去根据IP地址找到他的MAC地址。
在报文中,这个请求的目标IP地址是放在Target Address字段里面的,它必须不是多播地址。
ICMPV6 Option字段
Source link-layer address源链路层地址:发送者的链路层地址,如果知道。如果Source Address是未指定地址,必须不包括在内。否则,有地址的链路层上应当包括源链路层地址。
被请求组播地址的组成
首先我们看到报文,从三层开始分析
发起这个报文的源地址是一个链路本地地址,而这个地址刚好是R路由器和PC1所连接的接口地址,这说明了在路由器上不存在着PC1的MAC地址,无法进行普通报文的二层封装,需要获取到MAC地址以此来封装目的MAC。
然后我们看三层报文中的目的地址是一个不认识的地址,那么这个地址是从什么地方而来的呢?这又是干什么的?
在图中我们把这个地址标注为被请求节点组播地址,那么这个被请求节点组播地址是用来干什么的?
我们现在就对这个被请求节点组播地址来分析一下看它的地址,把这个地址分为三部分来看
ff02:ff3a:a9d1
首先ff02::1是一个组播地址,简单理解组播地址就是同一个组的地址都能接受到该报文。
然后在看ff02:ff
先看前面这104位地址,这104位地址的组成是在组播地址后面加了两个ff,这就是在RFC中规定的被请求节点组播地址的前缀
然后我们看后面24位地址
3a:a9d1这串数字在上面的图中看着是不是有点眼熟呢?
观察一下,请求的单播地址,也就是PC1的地址最后面的24位数字不就是3a:a9d1,这样一看,原来他们之间还是有关联的
在R路由器发起这个报文的时候,目的地址其实就是PC1。
被请求节点组播MAC的组成
以太网传输IP单播报文的时候,链路层封装的目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,因此在数据链路层使用的是组播MAC地址。在802.3标准中,MAC地址的高字节最低bit位是组播地址标识位,该bit为1,表示该地址为组播MAC地址。广播MAC地址可以看作是组播的特殊形式:0xFFFF-FFFF-FFFF。
IANA规定,IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。
安装IANA规定我们来解析一下这个被请求节点组播MAC是否符合规定
我们就先看高16位
33:33 符合IANA规定的高16位对吧
我们在看后面的32位
IPV6组播地址:ff02:ff3a:a9d1
组播MAC地址低位32位:ffa9:d1
完成符合IANA规定的组播MAC
IPV6邻居通告
邻居通告
ICMPv6邻居通告NA(Neighbor Advertisement)消息是IPv6节点对ICMPv6邻居请求NS(Neighbor Solicitation)消息的响应,同时IPv6节点在链路层变化时也可以主动发送NA消息。
对于请求的通告
从图中我们看Target Address字段,他是自身的IPV6地址,这是在给路由器回复确认,你请求的地址给你回复了。
对于请求的通告,是在NS消息(该消息催促这个通告)中的Target Address字段。对于非请求通告,是其链路层地址已经改变的地址。Target Address必须不是多播地址。
ICMPV6 Options字段
Target link-layer address: 目标的链路层地址,即,通告发送者。当响应多播请求时,在有地址的链路层上必须包括此选项。当响应单播Neighbor Solicitation时应当包括此选项,响应自身的MAC地址给路由器。
IPV6邻居表
在IPV4中我们可以通过ARP表项查看IP地址对应的MAC地址和接口,那么在IPV6中我们是不是也有类似ARP表项的一种表呢?
没错,在IPV6中我们可以通过邻居表查看到对应的信息
通过以下命令可以查看邻居表
displayipv6neighbors #查看邻居表以及邻居表回显信息displayipv6neighbors ----------------------------------------------------------------------------- IPv6Address:20014005211FE3A:A9D1 Link-layer:5489-9821-4f6dState:REACH Interface:GE0/0/0Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE IPv6Address:20014005:9 Link-layer:5489-9807-7f7cState:REACH Interface:GE0/0/1Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE IPv6Address:20014005:10 Link-layer:5489-985b-37dbState:REACH Interface:GE0/0/1Age:0 VLAN:-CEVLAN:- VPNname:IsRouter:FALSE SecureFLAG:UN-SECURE ----------------------------------------------------------------------------- Total:3Dynamic:3Static:0
回显字段解释
项目 | 描述 |
---|---|
IPv6 Address | 邻居的IPv6地址。 |
Link-layer | 邻居的链路层地址(邻居的MAC地址)。 |
State | 邻居项的状态,有以下5种状态: INCMP:邻居不可达。正在进行地址解析,邻居的链路层地址未探测到,如果解析成功,则进入REACH状态。 REACH:邻居可达。表示在规定时间(邻居可达时间,缺省情况下是30秒)内邻居可达。如果超过规定时间,该表项没有被使用,则表项进入STALE状态。 STALE:邻居是否可达未知。表明该表项在规定时间(邻居可达时间,缺省情况下是30秒)内没有被使用。此时除非有发送到邻居的报文,否则不对邻居是否可达进行探测。 DELAY:邻居是否可达未知。已向邻居发送报文,如果在指定时间内没有收到响应,则进入PROBE状态。 PROBE:邻居是否可达未知。已向邻居发送邻居请求报文,探测邻居是否可达。在规定时间内收到回复,则进入REACH状态;没有收到回复,则进入INCMP状态。 |
Interface | 邻居项所属的接口名称。 |
Age | 邻居项的建立时间,分为静态和动态两种情况: 静态项显示“–”。 动态项显示上次可达以来经过的时间(单位是分钟),如果始终不可达则显示“#”(只适用于动态项)。 |
VLAN | 邻居所属的VLAN编号。 |
VPN name | 邻居所属的VPN实例名称。 |
CEVLAN | 内层VLAN编号。 |
Is Router | 邻居发送的NA报文中是否携带R标记: 当NA报文中携带R标记时,则显示“TRUE”。此时邻居是路由设备。 当NA报文中没有携带R标记时,则显示“FALSE”。此时邻居可能是PC或者是发送的NA报文中没有携带R标记的路由设备。 |
Secure FLAG | 该邻居表项是否安全,分为安全和非安全两种情况: 如果是静态邻居表项或邻居使能了邻居安全功能则显示“SECURE”。 如果邻居没有使能安全功能,并且是动态邻居表项则显示“UN-SECURE”。 |
Total | 所有的邻居表项数目。 |
Dynamic | 动态邻居表项数目。 |
Static | 静态邻居表项数目。 |
-
以太网
+关注
关注
40文章
5381浏览量
171140 -
通信
+关注
关注
18文章
5973浏览量
135865 -
网络
+关注
关注
14文章
7520浏览量
88643 -
IPv6
+关注
关注
6文章
683浏览量
59328
原文标题:【路由交换】IPV6基础之邻居发现
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论