设为首页 - 加入收藏 白山怎么倍投可以避免被连黑 (http://www.0439zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 如何 浅谈 元素 页面
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

IPv6基础篇:邻居发现协议NDP

发布时间:2019-09-20 11:58 所属栏目:[教程] 来源:我叫王小壹
导读:本期我们将基于ICMPv6介绍IPv6体系中基础的邻居发现协议,即IPv6 ND。邻居发现协议代替了IPv4协议栈中的ARP和路由发现的功能,实现了地址解析,重复地址检测,路由器发现以及路由重定向等功能。 一、IPv6邻居发现协议使用的ICMPv6消息类型 IPv6邻居发现协

本期我们将基于ICMPv6介绍IPv6体系中基础的邻居发现协议,即IPv6 ND。邻居发现协议代替了IPv4协议栈中的ARP和路由发现的功能,实现了地址解析,重复地址检测,路由器发现以及路由重定向等功能。

IPv6基础篇:邻居发现协议NDP

一、IPv6邻居发现协议使用的ICMPv6消息类型

IPv6邻居发现协议使用5种类型的ICMPv6消息类型,用来实现地址解析,重复地址检测,路由器发现以及路由重定向等功能。具体的ICMPv6的消息类型及具体作用如下:

1、ICMPv6邻居请求(Neighbor Solicitation)消息

IPv6基础篇(四):邻居发现协议NDP

邻居请求报文NS(Neighbor Solicitation)报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。用来获取邻居的链路层地址,验证邻居是否可达,进行重复地址检测等。

2、ICMPv6邻居通告(Neighbor Adivertisment)消息

IPv6基础篇(四):邻居发现协议NDP

邻居通告报文NA(Neighbor Adivertisment)报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。用来对NS消息进行响应。另外,当节点在链路层变化的时候主动发出NA消息,告知邻居本节点的变化。

3、ICMPv6路由器请求(Router Solicitation)消息

IPv6基础篇(四):邻居发现协议NDP

ICMPv6路由器请求(Router Solicitation)消息:Type字段值为133,节点启动后,通过RS消息向路由器发出请求,请求前缀和其他配置信息,用于节点的自动配置。

4、ICMPv6路由器通告(Router Advertisement)消息

IPv6基础篇(四):邻居发现协议NDP

ICMPv6路由器通告(Router Advertisement)消息:Type字段值为134,对RS消息进行回应。在没有抑制RA消息发布的条件下,路由器会周期性地发布RA消息,其中包括前缀信息选项和一些标志位的信息。

5、ICMPv6重定向(Redirect)消息

IPv6基础篇(四):邻居发现协议NDP

ICMPv6重定向(Redirect)消息:Type字段值为137,当满足一定的条件时,缺省网关通过向源主机发送重定向消息,使主机重新选择正确的下一跳地址进行后续报文的发送。

二、地址解析

获取同一链路上邻居节点的链路层地址(与IPv4的ARP功能相同),通过邻居请求消息NS和邻居通告消息NA实现。节点1要获取节点节点2的链路层地址。

IPv6基础篇(四):邻居发现协议NDP

节点1在向节点2发送报文之前要解析出节点2的链路层地址。地址解析的过程主要如下(我们使用HCL模拟器来模拟这个过程):

组网如下:

IPv6基础篇(四):邻居发现协议NDP

整体报文交互总览(NS和NA):

IPv6基础篇(四):邻居发现协议NDP

①节点1会发送一个NS报文,Type值为135,源地址为节点1的IPv6地址。目的地址为节点2的被请求节点组播地址,要请求的为节点2的链路层地址。同时NS的报文的Options字段中携带了节点1的链路层地址。如下图:

IPv6基础篇(四):邻居发现协议NDP

②节点2收到NS消息后,会回应NS消息,源地址为节点2的IPv6地址,目的地址为节点1的IPv6地址,节点2的链路层地址会被放在Option字段里。

IPv6基础篇(四):邻居发现协议NDP

③节点1获取到了节点2的链路层地址。

最后我们在路由器上可以查看到RouterA的IPv6地址信息和所有的邻居信息:

IPv6基础篇(四):邻居发现协议NDP
IPv6基础篇(四):邻居发现协议NDP

在Ping链路本地地址时,需要使用-i参数,来指定链路本地地址的接口。

IPv6基础篇(四):邻居发现协议NDP

三、重复地址检测

当节点获取到一个IPv6地址后,需要使用重复地址检测功能确定该地址是否已被其他节点使用(与IPv4的免费ARP功能相似)。通过NS和NA可以实现重复地址检测。

在进行DAD检测时,一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和实验地址所对应的Solicited-Node组播组。

IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向一个自己将使用的试验地址所在的Solicited-Node组播组发送一个以该实验地址为请求的目标地址的NS报文,如果收到节点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该实验地址通讯。

IPv6基础篇(四):邻居发现协议NDP

DAD检测过程:

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章