IPV6除了显著增加了地址空间外,另一个最显著的特征就是它的即插即用性。
邻居发现协议(Neighbor Discovery Protocol,NDP)就是使用以下的功能实现即插即用特性的协议:

  • 路由器发现:当一个节点连接到一个IPV6的链路时,它能够发现本地的路由器,不必借助DHCP。
  • 前缀发现:当一个节点连接到一个IPV6的链路时,它能够发现分配给该链路的前缀。
  • 参数发现:节点能够发现它所相连的链路的参数(链路的MTU和跳数限制等)。
  • 地址自动配置:节点能够确定他的完整性,不需要DHCP。
  • 地址解析 :节点不需要借助ARP就能够发现所连接链路上其他节点的链路层地址。
  • 下一跳确定:一条链路上的节点能够确定到达目的节点的下一跳链路层节点。
  • 邻居不可达检测 :节点能检测到链路上的邻居(主机或路由器)何时不再可达。
  • 地址冲突检测:节点能检测到他所要使用的地址是否已经被链路上的其他节点所占用。
  • 重定向:对于非连接的目的节点,路由器能够通过重定向消息通知主机存在比它自己更好的下一跳路由。

NDP消息

NDP定义了5种ICMPv6报文类型:

  • 类型133 路由器请求(RS):由主机发起,用来请求一个路由器发送一个RA

  • 类型134 路由器通告(RA):由路由器发起,通告路由器的存在和链路的细节参数(链路前缀,MTU,跳数限制等),周期性发送,也用于答RS。

  • 类型135 邻居请求(NS):由节点主机发起,用来请求另一台主机的链路层地址,或实现地址冲突检测、邻居不可达检测。

  • 类型136 邻居通告(NA):有节点发起用来响应NS,如果一个节点改变了他的链路层地址,那么它能够主动发送一个NA来通告这个新地址。

  • 类型137 重定向(Redirect)

NDP消息通常在链路本地的范围内收发。
为了进一步增强安全性,承载所有NDP消息的IPV6数据包的跳数限制为255,如果收到的数据包跳数小于255的,说明该数据包最少已经经过一台路由器,因此该数据包应该被丢弃。这样可以防止NDP受到来自不与本地链路相连的源节点的攻击或欺骗。

路由器发现

路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。

在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:

RA报文:每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,最小缺省周期为200S,RA报文中会带有网络前缀信息,及其他一些标志位信息。未经请求的RA源地址是路由器接口的链路地址,目的地址是所有节点的多播地址(FE02::1)。

RS报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS的源地址可以是未指定的地址(::),也可以是该主机的链路本地地址,目的地址则始终是所有路由器的多播地址(FE02::2)。

当一台主机收到一条RA时,它就会将这台路由器添加到他的缺省路由器列表中,如果存在多台路由器条目时,要么在列表中依次轮询,要么选择保持单台路由器作为缺省路由。

地址自动配置

当一台IPV6的主机第一次连接到链路上时,他能够自我配置自己接口的链路地址:在自己接口的48位的MAC地址中间插入一个保留的16位数值0xFFFE,并把它的U/L位(第七位)翻转,这样就得到了一个64位接口ID。在接口ID前面加上链路本地前缀FE80::/10,就得到了链路本地地址

如果主机只需要和所在链路上的设备通信时,自动配置的地址已经足够,但是要和链路以外的主机通讯时,就需要更大的范围地址,通常使用以下两种方法获取地址:

  • 有状态:借助DHCPV6获取地址。
  • 无状态:主机将RA发来的链路前缀加上自己确定的接口ID,这样就得到了一个全球唯一的IPV6地址

地址冲突检测(类FARP)

当节点获取到一个新的地址时会将该地址归类位临时状态,在地址冲突检测没有完成并确认之前该地址不能被使用。
Host A的IPv6地址FC00::1为新配置地址,即FC00::1为Host A的试验地址。Host A向FC00::1的Solicited-Node组播组发送一个以FC00::1为请求的目标地址的NS报文进行重复地址检测,由于FC00::1并未正式指定,所以NS报文的源地址为未指定地址。当Host B收到该NS报文后,有两种处理方法
1.如果Host B发现FC00::1是自身的一个试验地址,则Host B放弃使用这个地址作为接口地址,并且不会发送NA报文。

2.如果Host B发现FC00::1是一个已经正常使用的地址,Host B会向FF02::1发送一个NA报文,该消息中会包含FC00::1。这样,Host A收到这个消息后就会发现自身的试验地址是重复的。Host A上该试验地址不生效,被标识为duplicated状态。

邻居地址解析(类ARP)

Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以首先Host A会发送一个NS报文,其中源地址为Host A的IPv6地址,目的地址为Host B的被请求节点组播地址,需要解析的目标IP为Host B的IPv6地址,这就表示Host A想要知道Host B的链路层地址。同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地址。

当Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host B的IPv6地址,目的地址为Host A的IPv6地址(使用NS报文中的Host A的链路层地址进行单播),Host B的链路层地址被放在Options字段中。这样就完成了一个地址解析的过程。

邻居不可达性的检测

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。

RFC2461中定义了5种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。

下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。

A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。

若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。

经过邻居可达时间,邻居状态由Reachable变为Stale,即不确定邻居节点的可达性。

如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。

在STALE状态到达老化时间后进入Delay状态。

在经过一段固定时间(5秒)后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。

在Probe状态,A每隔一定时间间隔(1秒)发送单播NS,发送固定次数(3次)后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。

邻居不可达性的检测需要双向检测,所以当一个未经请求的RA或NA不能改变邻居缓存条目的状态到Reachable。

IPV6 邻居发现协议(NDP)相关推荐

  1. IPv6邻居发现协议--NDP详解

    一.ICMPv6 -Internet控制报文协议 ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误 协议类型号(即:IPv6Next Header)为58 icmpv6可以提 ...

  2. IPV6邻居发现协议(NDP)

    概述 NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP.ICMP路由器发现和ICMP重定向等协议,并对它们作了改进.作 ...

  3. IPv6邻居发现协议NDP

    邻居发现协议NDP 邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议.邻居发现协议替代了IPv4的ARP(Address Resolu ...

  4. 4-ipv6基础知识之-邻居发现协议NDP

    邻居发现协议(NDP–Neighbor Discovery Protocol) 是指用icmpv6协议实现的一种路由协议; IPv6 环境中的常规主机和路由器都依赖于NDP 来帮助实现重要的信息交换. ...

  5. IPv6邻居发现协议

    邻居发现协议NDP 邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议.邻居发现协议替代了IPv4的ARP(Address Resolu ...

  6. linux ipv6邻居信息,IPv6邻居发现协议基本原理

    IPv6邻居发现协议提供下列功能:无服务器自动配置.路由器发现.前缀发现.解析.邻居不可达检测.链路MTU发现.下一跳决定和重复检测等. IPv6邻居发现协议定义了5种ICMPv6包: 路由器请求(R ...

  7. IPv6邻居发现协议添加默认路由

    在接收到邻居发现协议的RA(Router Advertisement)报文之后,由ndisc_router_discovery处理.首先,以此报文的源地址查找是否存在默认的路由器(rt6_get_df ...

  8. IPv6邻居发现协议ND学习笔记

    我们都或多或少的听说过IPv6的地址是可以自动生成的吧,那么这个自动生成是怎么生成的大家知道吗,我们来ND协议里一起寻找答案吧! 一,ND协议定义 ND(邻居发现协议)协议是IPv6非常重要的基础协议 ...

  9. 抓包解析邻居发现协议NDP

    实现环境:华为模拟器eNSP 需要安装eNSP的看这里:资源或者私信我 话不多说,直接上知识点 地址解析 1.邻居请求报文NS 被请求节点的多播地址作为目的IP地址 2.邻居公告消息NA 邻居可达性检 ...

最新文章

  1. 联邦学习fate笔记小结
  2. 浅谈Horizon DaaS平台 - 崛起的桌面云平台
  3. 硬件安全(二) 5G时代IOT环境下芯片安全风险与挑战
  4. MySQL高级 - 锁 - 锁的概述及分类
  5. Entity Framework 6 Recipes 2nd Edition(9-2)译-用WCF更新单独分离的实体
  6. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
  7. Python3 字典 copy()方法
  8. LeetCode 1289. 下降路径最小和 II(DP)
  9. spring boot 初步学习
  10. 产品经理职业发展前景的剖析
  11. audio标签的controls属性_HTML5 新增标签和属性
  12. 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
  13. JDK java version 1.8.0_181环境搭建
  14. base_c:字符串翻转练习
  15. 【SQL】获取最近一周日期列表
  16. 职业作秀V1.7.9更新公告
  17. 论字母导航的重要性,我们来实现一个联系人字母导航列表吧!
  18. 若A、B都是n阶正交阵,那么,A X B是正交阵吗?
  19. 无线耳机全国产化电子元件推荐方案
  20. matplotlib画3dbox

热门文章

  1. 字体图标svg改变颜色
  2. 阿里云创建AccessKey
  3. 让二维码变得有趣,点燃二维码的时尚之火
  4. 中国互联网老总的经典妙语语录
  5. 《网格交易法数学+传统智慧战胜华尔街》内容介绍及PDF下载
  6. 反恐精英系列《CS 2》将于今夏推出,在起源2的加持下视觉、玩法和环境效果可谓十分震撼
  7. 使用C++ opencv将16位图像映射到8位
  8. Gif动态图片怎样在线生成?一招快速完成gif在线制作
  9. 数字漫画行业繁花似锦,国漫扎根本土文化“向外生长”?
  10. 将用户需求转化为产品需求-质量屋