IPv6中NDP协议简介

article/2025/10/30 11:13:22

本文介绍IPv6中一种重要协议——NDP协议。NDP协议是实现IPv6通信的重要协议之一,本文将详细介绍IPv6中NDP的协议实现过程和技术细节。
阅读本文,您需要又有一定的IPv6基础知识,您如果对此还存在困惑,欢迎查阅下列文章:IPv6报文格式讲解及其科学性探究、IPv6地址简介、IPv6各地址计算方式汇总。

一、NDP协议概述

NDP协议,即Neighbor Discovery Protocol,邻居发现协议,是IPv6中一种重要协议。NDP协议定义在ICMPv6中,属于ICMPv6的消息型报文。NDP协议由RFC2461定义,主要用于IPv6中的数据通信。

二、NDP协议定义报文

在NDP协议中,定义了5种报文:
1、RA报文,Type=134,即Router Advertisement,路由器公告报文,该报文主要是路由器用来周期性的发布自身的hop limit 、link MTU等消息。
2、RS报文,Type=133,即Router Solicitation,路由器信息请求报文,该报文用于请求RA报文,当设备刚上线时,可能会使用该报文请求路由器发送RA报文,该报文可以使得路由器立即发送RA报文而不用等待RA周期。
3、NS报文,Type=135,即Neighbor Solicitation,邻居请求报文,该报文用于请求地址解析。
4、NA报文,Type=136,即Neighbor Advertisements,邻居公告报文,该报文用于答复NS报文,完成地址解析和报文刷新等功能。
5、Redirect报文,Type=137,当路由器发现更好的报文转发路径时,会使用该报文通知其他设备。

三、NDP协议作用

NDP协议在IPv6中主要有以下作用:
1、地址解析
所谓地址解析功能,就是替代IPv4中的ARP协议,实现寻找指定IPv6地址对应的MAC地址,该功能主要使用了NS报文和NA报文。
有关该功能的实现原理及细节请见IPv6地址解析详解
2、地址冲突检测
所谓地址冲突检测,就是类似于IPv4中的免费ARP报文功能,主要用于在设备刚上线时查询网络中有无与自己接口IPv6地址相同的IP地址,该功能的实现使用了NS和NA报文。
该功能的实现与地址解析类似,只不过将地址解析中的NS报文源IP地址换成了要检测IPv6地址的被请求节点组播地址,把目的地址换成了ff02::1,该地址是所有运行IPv6协议栈的设备都会监听的一个组播地址,如果接受到了NA回应,说明网络中存在与自己相同的IPv6地址,因此IPv6会把该接口的IP地址设为不可用。如果没有收到NA报文,则说明网络中没有冲突,因此接口IP地址就可以正常使用了。
有关该功能的实现可以参考下列文章的最后一节:IPv6邻居状态与邻居检测机制
3、邻居不可达检测
所谓邻居不可达检测,是IPv6中独特的机制,不同于IPv4的ARP缓存表项,IPv6会维持一个邻居表,当长时间不与该邻居通信后,就会把该邻居的状态置为STALE(陈旧),这样状态的邻居不能够与其直接进行通信,必须要进行邻居不可达检测。该功能的实现依托于NS和NA报文。在华为中,邻居不可达检测又被称为邻居状态监测。
有关该功能的实现原理及细节请见:IPv6邻居状态与邻居检测机制
4、无状态地址配置
所谓无状态地址配置,简称SLAAC,是IPv6中独有的特性。可以实现IPv6设备的即插即用。(DHCP实现的地址配置又叫做有状态地址配置,这里的无状态地址配置与之功能上类似)也可以利用无状态地址配置实现类似VRRP的功能。IPv6无状态地址配置使用了RS和RA报文。
有关该功能的实现原理及细节请见:IPv6 SLAAC原理详解及配置
5、重定向
所谓重定向,是IPv6中与ICMPv4重定向报文类似的一种功能,主要应用于以下场合:
在这里插入图片描述
假设在上面的拓扑图中,R3上配置了一条默认路由指向R2,现在假设R3要访问R1上的Loopback地址,这时它把数据包发送给了R2,那么在R2看来,该数据包是从接口G0/0/0发送过来的,但是该数据包出接口也是G0/0/0,因此它意识到网络中存在次优路径。这时,尽管R2还会转发该访问数据包,但是同时会向R3发送一个重定向报文,以告知R3,发往该IP的数据包可以不要发送给我,而是发送给R1的G0/0/0口的IP地址。
尽管重定向机制设计的比较合理,但是在路由器看来,其数据包的转发都是基于路由表,因此此时尽管R3收到了该重定向报文,但是不会按照重定向报文的指示转发数据包。
此外,如果R3是一个主机,收到了重定向报文,考虑到安全性,微软系列的主机也不会更改转发的目的地址。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118712828


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

相关文章

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++)

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

欧拉回路,欧拉路

http://www.cnblogs.com/pandy/archive/2009/05/07/1452209.html 参考以上: 判断欧拉路,欧拉回路: 注意图联通,可以DFS或者并查集 一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为…

欧拉回路讲解

今天我们专门来讲讲欧拉回路 欧拉回路是数学家欧拉在研究著名的德国哥尼斯堡(Koenigsberg)七桥问题时发现的。如图1所示,流经哥尼斯堡的普雷格尔河中有两个岛,两个岛与两岸共4处陆地通过7座杨 彼此相联。7桥问题就是如何能从任一处陆地出发,经过且经过每个桥一次后回到原出发…

欧拉回路

欧拉回路(Euler circuit) 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径 如果一个回路是欧拉路径,则称为欧拉回路 具有欧拉回路的图称为欧拉图(简称图),具有欧拉路径但不具有…

【图论】欧拉回路

前言 你的qq密码是否在圆周率中出现? 一个有意思的编码问题:假设密码是固定位数,设有 n n n位,每位是数字0-9,那么这样最短的“圆周率”的长度是多少?或者说求一个最短的数字串定包含所有密码。 理论 一…

算法提高课——3.10 欧拉路径和欧拉回路

欧拉路径和欧拉回路 哥尼斯堡七桥问题 以下内容摘自《信息学奥赛一本通提高篇》. 欧拉回路问题是图论中最古老的问题之一。它诞生于18世纪的欧洲古城哥尼斯堡,普瑞格尔河流经这座城市,人们在两岸以及河中间的小岛之间建了7座桥,如下图所示&am…

嵌入式编程语言

嵌入式开发几乎离不开C/C,虽然在一些嵌入式linux的开发场景可以选python、java,不过也需要BSP和SDK的支持,像操作系统移植、驱动开发几乎就是C的天下,最近有传闻rust也能开发linux内核模块了,但距离大规模使用看上去还…