IPv6 ND 协议功能概述

ND 协议功能概述

ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。

作为 IPv6 的基础性协议,ND 协议还提供了前缀发现,邻居不可达检测,重复地址检测,地址自动配置等功能。

ND 协议功能组成如图所示:
在这里插入图片描述

1)地址解析

地址解析是一种确定目的节点的链路层地址的方法。ND 中的地址解析功能不仅替代了原 IPv4 中的 ARP 协议,同时还用邻居不可达检测(NUD)方法来维护邻居节点之间的可达性状态信息。

2)无状态地址自动配置

ND 协议中特有的地址自动配置机制,包括一系列相关功能,如路由器发现,接口 ID 自动生成,重复地址检测等。通过无状态自动配置机制,链路上的节点可以自动获得 IPv6 全球单播地址。

  • 路由器发现

    路由器在 与其相连的链路上发布网络参数等信息,主机捕获次信息后,可以获得全球单播 IPv6 地址前缀、默认路由、链路参数(链路 MTU)等信息。

  • 接口 ID 自动生成

    主机根据 EUI-64 规范或其他方式为借口自动生成借口标识符。

  • 重复地址检测

    根据前缀信息生成 IPv6 地址或手动配置 IPv6 地址后,为保证地址的唯一性,在这个地址可以使用之前,主机需要检验此 IPv6 地址是否已经被链路上的其他节点所使用。

  • 前缀重新编址

    当网络前缀变化时,路由器再与其相连的链路上发布新的网络参数信息,主机捕获这些信息,重新配置前缀,链路 MTU 等地址相关信息。

3)路由器重定向

当在本地链路上存在一个到达目的网络的更好地路由器时,路由器需要通过节点来进行相应配置改变。

ND 协议报文

ND 协议定义了 5 种 ICMPv6 报文类型,如下表所示:

ICMPv6 Type含义
133RS (Router Solicitation,路由器请求)
134RA (Router Advertisement,路由器公告)
135NS (Neighbor Solicitation,邻居请求)
136NA (Neighbor Advertisement,邻居公告)
137Redirect (重定向报文)

NS/NA 报文主要用于地址解析,RS/RA 报文主要用于无状态地址自动配置,Redirect 报文用于路由器重定向。

地址解析

IPv6 地址解析的优点

IPv6 的地址解析过程包括两部分:一部分解析了目的 IP 地址所对应的链路层地址;另一部分是邻居可达性状态的维护过程,即邻居不可达检测。 IPv6 地址解析相对于 IPv4 的 ARP 解析,有以下优点:

  • 加强了地址解析协议与底层链路的独立性

    对每一种链路层协议都使用相同的地址解析协议,无须再为每一种链路层协议定义一个新的地址解析协议。

  • 增强了安全性

    ARP 攻击,ARP 欺骗是 IPv4 中严重的安全问题。在第三层实现地址解析,可以利用三层标准的安全认证机制来防止这种 ARP 攻击和 ARP 欺骗。

  • 减小了报文传播范围

    在 IPv4 中,ARP 广播必须泛滥到二层网络中每台主机。IPv6 地址解析利用三层组播寻址限制了报文的传播范围,通过将地址解析请求仅发送到待解析地址所属的被请求节点组播组,减小了报文传播范围,节省了网络带宽。

IPv6 地址解析过程

在 IPv6 中,ND 协议通过在节点间交互 NS 和 NA 报文完成 IPv6 地址到链路层地址的解析,解析后用得到的链路层地址和 IPv6 地址等信息来建立相应的邻居缓存表项。

地址解析过程如图所示:
在这里插入图片描述

1)NodeA 发送一个 NS 报文到链路上,目的 IPv6 地址为 NodeB 对应的被请求节点组播地址(FF02::1:FF02:B),选项字段中携带了 NodeA 的链路层地址 00E0-FC00-0001。

2)NodeB 接收到该 NS 报文后,由于报文的目的地址 FF02::1:FF01:B 时 NodeB 的被请求节点组播地址,所以 NodeB 会处理该报文;同时,根据 NS 报文中的源地址和源链路层地址选项更新自己的邻居缓存表项。

3)NodeB 发送一个 NA 报文来应答 NS,同时在消息的目标链路层地址选项中携带自己的链路层地址 00E0-FC00-0002。

4)NodeA 接收到 NA 报文后,根据报文中携带的 NodeB 链路层地址,创建一个到目标节点 NodeB 的邻居缓存表项。

通过交互,NodeA 和 NodeB 就获得了对方的链路层地址,建立其到达对方的邻居缓存表项,从而可以互相通信。

当一个节点的链路层地址发生改变时,以所有节点组播地址 FF02::1 为目的地址发送 NA 报文,通知链路上的其他节点更新邻居缓存表项。

邻居不可达检测(NUD)

NUD(Neighbor Unreachability Detection,邻居不可达检测)是节点确定邻居可达性的过程。

NUD 检测过程如图所示:
在这里插入图片描述

邻居可达性是单向的,如果需要达到 “双向” 可达,还需 NodeB 发送 NS 探测报文,NodeA 给 NodeB 回应 S 标志置为的 NA 报文。

地址解析交互报文

NS 报文

NS 报文是 ICMPv6 中类型为 135 的报文。

NS 报文结构如图所示:
在这里插入图片描述
其中各字段的含义如下:

1)Target Address:待解析的 IPv6 地址,16types。Target Address 不能是组播地址,可以是链路本地地址、站点本地地址和全球单播地址。

2)Options: 地址解析中只使用了链路层地址选项(Link-Layer Address Option),是发送 NS 报文节点的链路层地址。

链路层地址选项的格式如图所示:
在这里插入图片描述

其中各字段含义如下:

  1. Type:选项类型,在链路层地址选项中包括如下两种:
  • Type=1,表明链路层地址为 Source Link-Layer Address(源链路层地址),在 NS,RS,Redirect 报文中使用。

  • Type=2,表明链路层地址为 Target Link-Layer Address(目标链路层地址),在 NA,Redirect 报文中使用。

2)Length:选项长度,以 8bytes 为单位。

3)Link-Layer Address:链路层地址。长度可变,对于以太网为 6bytes。

NA 报文

NA 报文是 ICMPv6 中类型为 136 的报文。

NA 报文结构如图所示:
在这里插入图片描述
其中各字段的含义如下:

1)R:路由器标记(Router Flag)位,表示 NA 报文发送者的角色,置为 “1” 表示发送者都是路由器,置为 “0” 表示发送者为主机。

2)S:请求标记(Solicited Flag)位,置为 “1” 表示该 NA 报文是对 NS 报文的响应。

3)O:覆盖标记(Override Flag)位,置为 “1” 表示节点可以用 NA 报文中携带的目标链路层地址选项中的链路层地址来覆盖原有的邻居缓存表项。置为 “0” 表示只有在链路层地址位置时,才能用目标链路层地址选项来更新邻居缓存表项。

4)Target Address:待地址重复检测或地址解析的 IPv6 地址。如果 NA 报文是响应 NS 报文的,则该字段直接复制 NS 报文中的 Target Address。

5)Options:只能是 Type 值为 2 的 Target Link-Layer Address,是被解析节点的链路层地址。

无状态地址自动配置

IPv6 同时定义了无状态与有状态地址自动配置机制。有状态地址自动使用 DHCPv6 协议来给主机动态分配 IPv6 地址,无状态地址自动配置通过 ND 协议来实现。在无状态自动配置中,主机通过接受链路上的路由器发出的 RA 消息,结合接口的标识符而生成一个全球单播地址。

去状态地址自动配置有以下优点:

1)真正的即插即用。节点连接到没有 DHCP 服务器的网络时,无须手动配置地址等参数便可访问网络。

2)网络迁移方便。当一个站点的网络前缀发生变化,主机能够方便地进行重新编址而不影响网络连接。

3)地址配置方式选择灵活。系统管理员可根据情况决定使用何种配置方式 —— 有状态,无状态还是两者兼容。

无状态自动配置设计以下 3 种机制:路由器发现、DAD 检测和前缀重新编址。

路由器发现

在路由器通告报文 RA 中承载着路由器的相关信息,ND 协议通告 RS 和 RA 的报文交互完成路由器发现,前缀发现和参数发现三大功能,协议交互主要有两种情况:主机请求触发路由器通告和路由器周期性发送路由器通告。

  • 主机请求触发路由器通告

  • 当主机启动时,会向本地链路范围内所有的路由器发送 RS 报文,触发链路上的路由器相应 RA 报文。主机接收到路由器发出的 RA 报文后,自动配置默认路由器,建立默认路由列表,前缀列表和设置其他的配置参数。

  • 为了避免链路上有过多的 RS 报文,启动时每个节点最多只能发送 3 个 RS 报文。

  • 路由器周期性发送路由器通告

DAD 检测

DAD(Duplicate address Detection,重复地址检测)是节点确定即将使用的地址是否在链路上唯一存在的过程。所有的 IPv6 单播地址,包括自动配置或手动配置的单播地址,在节点使用之前必须要通过重复地址检测。

DAD 是通过 NS 和 NA 报文实现的。

DAD 过程如图所示:
在这里插入图片描述
需要注意的是,IPv6 节点对任播地址不进行 DAD 检测,因为任播地址可以被分配给多个接口使用。

前缀重新编址

前缀重新编址(Prefix Renumbering)允许网络从以前的前缀平稳过渡到新的前缀,提供对用户的网络重新编址能力。路由器通告 RA 报文中的优先时间和有效时间参数来实现前缀重新编址。

无状态地址自动配置过程

ND 协议的无状态自动配置包括两个阶段:链路本地地址的配置和全球单播地址的配置。

当一个接口启用时,主机首先会根据本地前缀 FE80::/64 和 EUI-64 接口标识符,为该接口生成一个本地链路地址。

对于主机上全球单播地址的配置步骤如图所示:
在这里插入图片描述

地址配置完成后,路由器可以启动 NUD 检测,周期性发送 NS 报文,探测该地址是否可达。

地址的状态及生存周期

自动配置的 IPv6 地址在系统中有一个生存周期,在这个生存周期中,这个地址根据与优先时间和有效时间的关系,可以被划分为临时(Tentative),优先(Preferred),反对(Deprecated)和无效 (Invalid) 4 种状态。

如图所示:
在这里插入图片描述

地址自动配置交互报文

路由器请求报文(RS)

RS 报文是 ICMPv6 中类型为 133 的报文,其结构如图所示:
在这里插入图片描述
其中字段含义如下:

Options(选项)字段:只能是源链路层地址选项,表明该报文发送者的链路层地址,不过如果 IPv6 报头的源地址为未指定地址,则不能包括该选项。

路由器通告报文(RA)

RA 报文是 ICMPv6 中类型为 134 的报文。

其结构如图所示:
在这里插入图片描述
其中字段含义如下:

字段描述
Cur Hop Limit跳数限制。
协议规定默认 IPv6 中 Hop Limit 数值,若为 0,表示路由器不适用该字段。设备实现中该值可配置,默认为 64
M管理地址配置标识(Managed Address Configuration)。
M 位为 0 表示无状态自动配置生成 IPv6 地址,M 位为 1 表示需要通过有状态(DHCPv6)方式获取 IPv6 地址。
O其他有状态配置标识(Other Stateful Configuration)。
O 位为 0 表示除了 IPv6 地址以外的其他参数需要通过无状态自动配置获取,如果 O=1 表示除了 IPv6 地址以外的其它需要通过有状态(DHCPv6)方式进行获取。
协议规定,若 M 标记置为 1,则 O 标记也应置为 1,否则无意义。
H家乡代理标识(Home Agent),移动 IPv6 中定义的字段。
Prf默认路由器优先级(Default Router Preference)。
P代理标识(Proxy)
Router Lifetime与默认路由器关联的生存期,以秒为单位。最大值 18.2 小时。
取 0 值的 Lifetime 指出路由器不是默认路由器并且不应当出现在默认路由器列表中,但 RA 报文的其他信息仍然有效。
Router Lifetime 仅适用于作为默认路由器的路由器应用;对包括在其他消息字段或选项中的信息不适用。需要对它们的信息规定时间限制的选项有它们自己的生存期字段。
Reacheable Time此时间以毫秒计,在收到可达性确认后节点假定该邻居是可到达的。
它由 Neighbor Unreachability Detection 算法使用。
此值为 0 意味着没有 (由此路由器) 作出规定。
Retrans Timer重发的 Neighbor Solicitation 消息间隔时间,以毫秒计。
由地址解析和 Neighbor Unreachability Detection 算法使用。
此值为 0 意味着没有 (由此路由器) 作出规定。
Options选项字段,包含有源链路层地址选项,MTU 选项,前缀信息选项,通过间隔选项,家乡代理信息选项,路由信息选项等。

选项字段中个选项的含义如下:

  1. 源链路层地址选项

路由器发送 RA 报文的接口的链路层地址。

  1. MTU 选项

包含了在链路上运行的链路层协议所能支持的 MTU 最大值。

3)前缀信息选项(Prefix Information Option)

用于地址自动配置的前缀信息,可包含多个。

前缀信息选项在 RFC2461 中定义,用于表示地址前缀和有关地址自动配置的信息,值用于 RA 报文中;在其他的消息中,此选项应该被忽略。

其格式如图所示:
在这里插入图片描述
其各字段的含义如下所示:

字段描述
Type选项类型,值为 3
Length选项长度,以 8bytes 为单位,值为 4
Prefix Length前缀长度,值为 0-128
L直连标记(on-link flag)。
当取值为 1 时,表示该前缀可以作为 on-link 判断;否则表示该前缀不用作 on-link 判断,前缀本身也不包含 on-link 或 on-off 属性,默认值为 1。
A自动配置标记(Autonomous Address-configuration Flag)。
当取值为 1 时,表示该前缀用于无状态地址配置;否则为有状态地址配置。默认值为 1。
R路由器地址标记(Router Address Flag)。
用于移动 IPv6(RFC3775),当取值为 1 时,表示 Prefix 字段不仅包含前缀信息,同时也包含了发送该 RA 报文的路由器地址。
Valid Lifetime有效时间,表示该前缀产生的 on-link 地址处于有效状态的时间(单位为秒)。
Preferred Lifetime优先时间,表示由该前缀通过无状态地址自动配置产生的地址处于优先状态的时间。
Prefix前缀地址,长度为 16bytes。
该字段和 Prefix Length 字段一起明确定义了一个 IPv6 地址前缀

4)路由信息选项(Route Information Option)

用于主机生产默认路由。路由信息选项在 RFC4191 中定义,取代了原前缀信息选项的功能。接收 RA 报文的主机将选项中的信息添加到自己的贝蒂路由表中,以便在发送报文时做出更好地转发决定。

其个数如图所示:
在这里插入图片描述
其中各字段含义如下所示:

字段描述
Type选项类型,值为 24
Length选项长度,以 8bytes 为单位,根据 Prefix Length 的长度,可取 1,2,3 这 3 个值。
Prefix Length前缀长度,表示对路由有意义的前缀位数,值为 0-128
Prf默认路由器优先级(Default Router Preference)。
Route Lifetime路由生命周期,表示用于路由信息选项的前缀处于有效状态的时间.
当 RA 中的 Router Lifetime = 0 时,Route Lifetime 也应该为 0。
Prefix前缀地址,表示有效的路由前缀,其长度由 Prefix Length 决定。

重排修订自

IPv6 知识概述 – ND 协议 | 码农家园 https://www.codenong.com/cs106708770/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 定位!只需一张图片就能找到你,锁定具体位置!精确到经纬度

你能猜到这张自拍的拍摄地点吗?别小瞧了AI的能力,答案可能会让你吓一跳。 这事交给现在的AI来处理,它只需要“看”一眼,就能把照片里的“底裤都给扒出来”: 美国,加利福尼亚州,旧金山机场洗手间,93号登机口…

关于Ubuntu24.04嘉立创EDA无法启动的问题

关于Ubuntu24.04嘉立创EDA无法启动的问题 查看无法启动原因解决办法1解决办法2 查看无法启动原因 在终端使用启动文件命令报错 解决办法1 输入如下命令可以正常启动 ./lceda-pro --no-sandbox 解决办法2 找到desktop文件进行修改 cd /usr/share/applications sudo vim lce…

HTML制作一个日蚀的动画特效

大家好&#xff0c;今天制作一个日蚀动画特效&#xff01; 先看具体效果&#xff1a; 使用一个逐渐扩大的圆形阴影来模拟月亮遮挡太阳的效果。使用了CSS的keyframes动画和border-radius属性来创建一个简单的圆形阴影效果。 HTML <!DOCTYPE html> <html lang"e…

[Cloud Networking] Layer 2 Protocol

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路&#xff1a;通过阻断冗余链路来消除网络中可能存在的环路链路备份&#xff1a;当活动链…

DC/AC电源模块:为物联网设备提供可靠的电力支持

BOSHIDA DC/AC电源模块&#xff1a;为物联网设备提供可靠的电力支持 DC/AC电源模块是物联网设备中非常重要的组成部分之一&#xff0c;它为设备提供稳定、可靠的电力支持。在物联网应用中&#xff0c;设备通常需要通过无线网络与其他设备或云平台进行通信&#xff0c;而这些设…

Photoshop中颜色与色调的调整

Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…

【个人博客搭建】(23)购买服务器、域名、备案

1、服务器主要是为了有一个公网的IP地址&#xff0c;方便我们可以通过网络随时访问 2、域名是对IP地址的一个替代。简单说IP地址可能不方便记忆&#xff0c;但是自己配置的域名会简单些&#xff0c;另外暴露IP地址也不安全。(虽然也能通过域名找到IP) 3、备案。这是政策。简单所…

运营商三要素核验-手机号实名认证接口-运营商三要素核验接口

手机号三元素实名认证&#xff0c;通过手机号、真实姓名、身份证号来校验三者是否一致。支持三大运营商携号转网查询&#xff0c;姓名、手机号、身份证号码三项验证是否一致&#xff1b;服务器毫秒级响应&#xff0c;信息验证科学严谨&#xff0c;数据安全可靠。 更新周期&…

听说前端都是切图仔,所以学了PS

PS 从零开始-基础篇 什么话都不想说了&#xff0c;前端以死后端已死&#xff0c;毁灭即是新生&#xff0c;我要开始追梦了&#xff0c; 从小就希望&#xff0c;制作一款自己的游戏&#x1f3ae;去学了编程&#xff0c;了解了&#xff1a;Java、C#、前端... 不小心入了web领域…

谷歌利用人工智能来推动搜索,显示出其组织信息的方式存在问题

谷歌利用人工智能来推动搜索&#xff0c;显示出其组织信息的方式存在问题 从相关文件到新闻报道、商业、音乐和社会互动&#xff0c;世界上的大部分信息现在都在网上。谷歌成立于1998年&#xff0c;其使命是“组织世界上的信息&#xff0c;使其普遍可用和有用”&#xff0c;它…

SpringBoot不用写Controller、不用写Service、不用建表,直接起飞是什么感觉

Spring Data REST 提供了一种简单的方式来暴露 JPA 实体为 RESTful 服务&#xff0c;这使得构建基于 REST 的数据服务变得非常快速和高效。下面是一个使用 Spring Data REST 构建通用架构的基本示例&#xff1a; 首先&#xff0c;我们需要创建一个实体类&#xff08;例如&…

若依对数据二次处理导致查询total只有十条的问题处理办法

前言&#xff1a; 在使用若依框架的过程中&#xff0c;如果是查询结果数据直接返回&#xff0c;那么其自带的分页插件可以正常返回数据以及总条数&#xff0c;若是在业务逻辑层对数据进行了其他二次处理&#xff0c;再返回就会出现异常&#xff0c;无论查询了多少条&#xff0…

树莓派4B学习笔记7:(Python)_TTL串口收发数据_

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日尝试使用树莓派的TTL串口进行收发数据&#xff1a; …

中电联系列四:rocket手把手教你理解中电联协议!

分享《慧哥的充电桩开源SAAS系统&#xff0c;支持汽车充电桩、二轮自行车充电桩。》 电动汽车充换电服务信息交换 第4部分&#xff1a;数据传输与安全 Interactive of charging and battery swap service information for electric vehicle Part 4:Data transmission and secu…

【GreenHills】GHS-Point导致的调试HardFault错误

【更多软件使用问题请点击亿道电子官方网站】 1、 文档背景 该客户使用的IDE为S32 Design Studio for ARM &#xff0c;使用的编译器为GHS compiler&#xff0c;调试器为PE。 客户在使用Ceil函数进行函数调用时&#xff0c;编译可以正常通过&#xff0c;但调试无法成功运行。…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法&#xff1a; select distinct 列名 from 表&#xff1b; distinct必须在列的前面&#xff0c;否则直…

基于MATLAB仿真的BCC卷积码维特比译码算法

&#x1f9d1;&#x1f3fb;个人简介&#xff1a;具有3年工作经验&#xff0c;擅长通信算法的MATLAB仿真和FPGA实现。代码事宜&#xff0c;私信博主&#xff0c;程序定制、设计指导。 &#x1f680;基于MATLAB仿真的BCC卷积码维特比译码算法 目录 &#x1f680;1.BCC卷积码概…

Java的核心类库

引言 在Java编程中&#xff0c;熟练掌握常用类与对象操作是开发的基础。Java的核心类库提供了丰富的功能&#xff0c;可以帮助开发者高效地处理各种编程任务。本文将详细介绍Java字符串操作、集合框架、日期与时间处理等内容&#xff0c;并通过图表和表格进行总结与示范。 字符…

Tailwind CSS 实战指南:快速构建响应式网页设计

title: Tailwind CSS 实战指南&#xff1a;快速构建响应式网页设计 date: 2024/6/12 updated: 2024/6/12 author: cmdragon excerpt: 这篇文章介绍了Tailwind CSS框架的特点与优势&#xff0c;包括其作为实用性的CSS框架如何通过预设的样式类实现快速布局和设计&#xff0c;…

每日一题——Python实现PAT乙级1109 擅长C(举一反三+思想解读+逐步优化)七千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试 代码分析 时间复杂度 空间复杂度 总结 我要更强 代码结构与功能 全局…