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

article/2025/10/30 11:27:44

一、ICMPv6 -Internet控制报文协议

ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误

协议类型号(即:IPv6Next Header)为58

在这里插入图片描述

icmpv6可以提供icmpv4的的对应功能之外,还有其他一些功能的基础如邻居发现、无状态地址配置、重复地址检测、PMTU发现等。

消息类型:
在这里插入图片描述

IPv6和IPv4相比有哪些优势?

  • v4是用arp广播试下地址解析和重复地址检测
  • v6是用组播形式,减轻设备性能压力
  • v6在三层完成地址解析,适用更多的链路层(介质独立性)
  • v6在三层完成解析,可以使自身ipsec安全认证机制提高安全性,避免类似v4中的arp欺骗

二、IPv6邻居发现协议–NDP详解

NDP(Neighbor Discovery Protocol,邻居发现协议) 是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。该协议使用icmpv6协议实现,作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。

NDP使用的ICMPv6的相关报文Type字段说明
RS(router solicitation)路由器请求133当主机刚刚接入网络并被配置为自动获取地址,主机需要自动获得前缀、前缀长度、默认网关等信息时,就会发送RS消息。
RA(router Advertisment)路由器通告报文134RA消息由路由器周期性地发送,或者在收到主机发送的RS消息后立刻发送,主要为主机提供编址信息以及其他配置信息。
NS(Neighbor solicition)邻居请求报文135当节点不知道目标地址的链路层地址时,将发送NS消息。
NA(Neighbor Advertisement):邻居通告报文)136当节点接收到NS消息后,会快速响应NA消息,或者当节点需要快速传播新的信息(非请求)时,也会发送NA消息。
重定向报文137通过重定向消息,路由器可以通告更优的下一跳路由,也可以用于通知目标地址就是邻居。

NDP功能点:

  • 路由发现-----------发现链路上的路由器,获得路由器通告的信息 ( RS RA报文)
  • 无状态自动配置–通知路由器通告的地址前缀,终端自动生成IPv6地址 (NS NA报文)
  • DAD-----------------获得地址后,进行地址重复检测,确保地址不存在冲突 (NS NA报文)
  • 地址解析-----------请求目的网络地址对应的数据链路层地址,类似IPv4的ARP (NS NA报文)
  • 邻居状态跟踪-----通过NDP发现链路上的邻居并跟踪邻居状态 (NS NA报文)
  • 前缀重编址--------路由器对所通告的地址前缀进行灵活设置实现网络重编址
  • 路由重定向--------告知其他设备,到达目标网络的更优下一跳

地址解析:

IPv6的地址解析实现了从IP地址解析到链路层地址的功能。
与IPv4协议不同,IPv6的地址解析有了以下变化:
① 不再使用ARP协议而是使用NDP协议;
② 不再使用广播方式而是使用组播方式;
③ 地址解析在三层(icmpv6)完成而不是2.5层(arp)。

由此,IPv6的地址解析具有如下优点:
① 由于地址解析在三层完成,不同的二层介质可以使用相同的地址解析协议;
② 采用组播方式发送NS消息,更加高效,减少了二层网络的压力;
③ 可以使用三层的安全机制(如IPSec)以避免地址解析攻击。

ipv6地址解析过程中使用了两种报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor Advertisement)。

NS报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。
NA报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。

流程解析:

① R1要去R2ping包,但是不知道对方地址(即R1想要知道R2的MAC地址),所以R1会发送NS邻居请求报文(源为R1的IPv6地址),目的地址是(R2的被请求节点组播地址,以FF02::1:FF开头),同时需要指出的是在NS报文的Options字段中还携带了一个R1的MAC地址.

NS:
在这里插入图片描述
ps:

  • IPv6组播MAC地址以0x3333开头,低32位为IPv6组播地址的低32位,最终形成48比特的组播MAC地址

  • RFC4291定义组播地址格式如下;

    |         8        |  4  |  4   |                     112                                  |
    +---------------+----+------+---------------------------------------------+
    |11111111|flgs|scop|                  group ID                            |
    +--------------+-----+-------+--------------------------------------------+
    

(1)组播地址高8bit为固定值FF,此高8个bit中4bit为flgs位,4bit为组播组的泛洪范围。
(2)flags位为4bit: |0|R|P|T|

flags位的高1bit为保留,必须设置为0
T位如果为置0表示永久分配或者是well-known组播地址,如果置1表示临时分配动态的地址,不固定。
P位如果置1的话表示此组播地址是一个基于单播前缀的ipv6组播地址。默认为0,如果P位设置为1,那么T位必须为1。
R位如果置1的话表示此组播地址是一个内嵌RP地址的ipv6组播地址。默认为0

(3)4bit scope位来限制组播组的传播范围。

         0  reserved1  Interface-Local scope2  Link-Local scope--链路本地范围3  reserved4  Admin-Local scope-管理本地范围5  Site-Local scope--站点本地范围6  (unassigned)7  (unassigned)8  Organization-Local scope-组织本地范围9  (unassigned)A  (unassigned)B  (unassigned)C  (unassigned)D  (unassigned)E  Global scope--全局范围的F  reserved

(4)低112 bit为组播地址的可用组ID。举例:

所有节点的组播地址:  FF02:0:0:0:0:0:0:1
所有路由器的组播地址:FF02:0:0:0:0:0:0:2 
Solicited-Node组播地址:  FF02:0:0:0:0:1:FFXX:XXXX
所有OSPF路由器组播地址: FF02:0:0:0:0:0:0:5
所有OSPF的DR路由器组播地址: FF02:0:0:0:0:0:0:6
所有RIP路由器组播地址: FF02:0:0:0:0:0:0:9
所有PIM路由器组播地址: FF02:0:0:0:0:0:0:D

② 当R2收到了NS报文后,就会回应NA报文,其中源地址为R2的IPv6地址,目的地址是R1的IPv6地址(使用NS报文中的R1的MAC地址进行单播),R2的MAC地址被放在Options字段中,这样就完成了一个地址解析的过程

NA:
在这里插入图片描述

路由发现:

全球单播地址的配置步骤如下:
1)客户端在配置好链路本地地址后,发送RS报文,请求路由器的前缀信息。
2)路由器收到RS报文后,发送RA报文,其中携带M、O flag用于指示进行何种类型配置,A flag用于无状态地址自动配置的前缀信息。同时路由器也会周期性地发送组播RA报文。
3)客户端根据RA报文携带A flag,获取网关信息。如果是自动配置或者是无状态,则根据M、O flag,选择IPv6地址及DNS的获取方式。

  • 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Tpye字段值为133。

在这里插入图片描述

  • 路由器通告RA(Router Advertisement)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。

在这里插入图片描述

M flag:为1通过DHCPv6获取IP地址,为0则是通过RA报文获取地址。
O flag:为1通过DHCPv6获取DNS等其他配置,为0通过RA报文获取其他配置。
A flag:表示是否可以使用RA报文前缀信息配置无状态地址

虚拟机中查看ra生成的路由:

# ip -6 route
default via fe80::216:3eff:fe22:314 dev eth0  proto ra  metric 1024  expires 295sec hoplimit 64

下图可以理解其流程:
在这里插入图片描述

图片引用自:https://www.cnblogs.com/fzxiaomange/p/ipv6-autoconf-stateless-stateful.html

三、DHCPv6协议

和IPv4的bootp(DHCPv4)作用类似,DHCPv6基于UDP,通过与服务器协商获取IP地址及DNS等信息
DHCPv6和DHCPv4报文对比:
在这里插入图片描述

dhcpv6请求过程如下:
在这里插入图片描述

其中的NS报文展开如下,即DAD重复地址检测。
在这里插入图片描述
IPv6重复地址检测和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS邻居请求报文。NS报文中目标地址即为试验地址(一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址Tentative Address)。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。

参考
https://blog.csdn.net/u011029104/article/details/119427279
https://www.pudn.com/news/6275d7fe9221806f9db9c56c.html#1.1%E3%80%81NDP%E7%AE%80%E5%8D%95%E8%AF%B4%E6%98%8E%EF%BC%9A


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

相关文章

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

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

欧拉回路,欧拉路

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…