IPV6 邻居发现协议(NDP)

article/2025/10/30 4:56:08

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。


http://chatgpt.dhexx.cn/article/XrAaFCWM.shtml

相关文章

802.11 - NDP反馈报告

目录 概述 帧格式 能力指示 NFRP Trigger帧格式 Common Info字段 HE TB feedback NDP帧格式 NDP Feedback Report Parameter Set element格式 NDP反馈报告流程 概述 STA行为 NDP反馈报告的TXVECTOR参数 STA处理流程 NDP反馈报告流程中的Power save操作 概述 NDP反…

ipv6的NDP协议有哪些功能,是如何进行工作的

ipv6的NDP协议有哪些功能 NDP(neighbor Discovery protocol)是ICMPv6的子协议是IPV6协议体系中一个重要的基础协议,邻居发现协议替代了IPV4的ARP,ICMP路由器发现。它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态&a…

IPV6邻居发现协议(NDP)

概述 NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不…

11.NDP协议分析与实践

NDP 协议分析与实践 1. 概述 1.1 简介 Neighbor Discovery Protocol 基于 ICMPv6 实现,用于替代 IPv4 中的 ARP 和 ICMP 路由器发现基于 ICMPv6 实现节点发现(主机和路由)、重复地址检测、地址解析、邻居不可达检测和重定向等功能 1.2 NDP 报文格式 1.2.1 路由…

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

一、ICMPv6 -Internet控制报文协议 ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误 协议类型号(即:IPv6Next Header)为58 icmpv6可以提供icmpv4的的对应功能之外,还有其他一些功能的基础如邻居发…

IPv6中NDP协议简介

本文介绍IPv6中一种重要协议——NDP协议。NDP协议是实现IPv6通信的重要协议之一,本文将详细介绍IPv6中NDP的协议实现过程和技术细节。 阅读本文,您需要又有一定的IPv6基础知识,您如果对此还存在困惑,欢迎查阅下列文章:…

5. NDP

NDP(Neighbor Discovery Protocol)NDP实现了IPv6中诸多重要机制。 路由器发现:该功能帮助设备发现链路上的路由器,并获得路由器通告的信息。 无状态自动配置:无状态自动配置是IPv6的一个亮点功能,它使得IP…

NDP原理详解

概述: 节点使用ND,可以确定连接在同一链路上的邻居的链路层地址,快速清除已经变成无效的缓存值。主机也使用ND发现能为其转发报文的路由器。最后,节点使用此协议主动跟踪哪一个邻居可达,哪一个邻居不可达,…

NDP 协议介绍

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。 邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器 发现(RouterDiscovery),它定义了…

一文解释NDP协议(IPv6邻居发现协议)ICMPv6

目录 目录 一、前言介绍: 1.1、NDP简单说明: 1.2、ICMPv6-Internet控制报文协议 1.3、IPv6和IPv4相比有哪些优势? 二、IPv6邻居发现协议--NDP详解 2.1、IPv6地址解析 2.1.1、邻居请求(Neighbor solicition)NS …

欧拉道路与欧拉回路

1. 相关的概念如下: ① 有向图G为欧拉回路:当且仅当G的基图连通,且所有顶点的入度等于出度 ② 有向图G为欧拉路:当且仅当G的基图连通,而且只存在一个顶点u的入度比出度大于1,只存在一个顶点v的出度比入度…

欧拉回路及例题

欧拉回路 几个定义性质与定理 定理1 推论1 定理2 推论2 性质1性质2 算法主体例题 uoj117求给定图的欧拉回路poj1041求字典序最小的欧拉回路poj1386Play on Wordspoj2230求无向图欧拉图要求每条边走两遍且方向不同poj2513字符串的欧拉图poj2337字典序poj1637Sightseeing tour求…

欧拉回路和Hanmilton回路

1、 一个是对点的,一个是对边的。 2、欧拉回路、欧拉图。有欧拉回路的,就做欧拉图?其实,还有欧拉通路的概念,一笔画完一个图的概念。理一理。 欧拉图:就是从起点出发,可以回到起点的图&#x…

欧拉回路,欧拉路径,欧拉图详解

欧拉回路定义: 欧拉回路:每条边恰好只走一次,并能回到出发点的路径 欧拉路径:经过每一条边一次,但是不要求回到起始点 首先看欧拉回路存在性的判定(这里先不说混合图): 一、无向图…

欧拉回路的基本概念

欧拉回路相关定义: || 如果图G(有向图或者无向图)中有一条通路,该通路上所有边一次且仅有一次行遍所有顶点,那么这条通路称为欧拉通路 || 如果图G中所有边一次且仅有一次行遍所有顶点,称图G有欧拉回路 |…

【算法】欧拉回路

欧拉路径 在一个图中,由i点出发,将每个边遍历一次最终到达j点的一条路径。 欧拉回路:ij时的欧拉路径。 一些概念 图中的度:就是指和该顶点相关联的边数 在有向图中,度又分为入度和出度。 入度 (in-degree) &#x…

欧拉回路问题

文章目录 欧拉回路程序设计程序分析欧拉回路 有一条名为Pregel的河流经过Konigsberg城。城中有7座桥,把河中的两个岛与河岸连接起来。当地居民热衷于一个难题:是否存在一条路线,可以不重复地走遍7座桥。这就是著名的七桥问题。它由大数学家欧拉首先提出,并给出了完美的解答…

欧拉回路/路径【总结】

作为广大OIer的朋(gong)友(di)的欧拉,在图论中也贡(zuo)献(e)良(duo)多(duan),尤其是萌新经常会遇到以下两个恶…

欧拉通路和欧拉回路

定义: 欧拉通路: 如果存在一条通路包含此图中所有的边,则该通路成为欧拉通路,也称欧拉路径(一笔画) 欧拉回路: 如果欧拉路径是一条回路,那么称它为欧拉回路 欧拉图 : 含…

实现求欧拉回路算法(C++)

一、算法介绍及实现过程: 程序的输入为对应图的结点数和图中与各结点相连的点的编号。(注:无向图中的多重边和自环需多次输入;有向图中的多重边需多次输入)程序的第一步是求出图的邻接矩阵。邻接矩阵反映了点与点之间…