ICMPV6协议及NDP协议

article/2025/10/30 11:17:37

一、ICMPV6

    1、基于ipv6的ICMPv6(Internet control message protocol for IPv6)是 IPv6 下的 Internet 控制报文协议;在 IPv6 中,ICMPv6 整合实现了 IPv4 中的 ICMP(ping命令)、ARP 以及 IGMP 的所有功能,主要包括错误报告、网络诊断(ping6命令)、邻居发现、多播实现和重定向等。

    2、在IPv6包头中,NextHeader=58则表示IPv6包头后封装着一个ICMPv6消息

    3、ICMPV6报文

(1)Type:表示 ICMPv6 报文的类型,当取值介于 0 到 127 之间时,表示该报文为错误报文(如目的不可达、超时等),当取值在 128 到 255 之间时,则表示该报文为信息报文。

(2)Code:表示此消息类型(Type)细分的类型,具体区分每种消息类型的错误信息,如目的不可达可能是防火墙导致的,也可能是路由错误导致的。

(3)Checksum:校验和,校验的部分包括了 IPv6 伪首部和ICMPv6报文。IPV6伪首部包含4个部分:16字节的sourse address, 16字节的destination addrss,2字节的 payload length, 1字节的next header。

注:ICMPv6消息类型中有5种是为了支持邻居发现协议而定义的。

TYPECODE消息名称 
1330路由器请求(RS) 
1340路由器通告(RA) 
1350邻居请求(NS) 
1360邻居通告(NA) 
1370重定向报文 

二、邻居发现协议NDP

    邻居发现协议NDP是通过 Internet 控制报文协议(ICMPv6)报文来承载的;在一个IPv6数据报中,如果该数据报的“下一个报头”字段的值为 58,且 ICMPv6 报文中类型字段取值范围为133-137,则此IPv6报文的数据部分含有邻居发现协议报文。NDP使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。,格式如图 3-1 所示。

  1、路由请求报文(Router Solicitation Message,RS)

  2、路由通告报文(Router Advertisement Message,RA)

 

 

3、邻居请求报文NS(Neighbor Solicitation Message,NS)

     (1)功能

             《1》邻居请求报文可以用来完成ARP的功能(地址解析)

                      NS 报文包含发送方的源链路层mac地址,IPV6首部中:当进行地址解析时,目的IPV6地址是一个多播地址

             《2》可以用来探测目的主机的连通性(跟踪邻居状态)

                     而在验证某相邻节点是否可达时,IPV6首部中:目的地址是邻居的单播地址

             《3》可以用来验证自己的地址在本地链路上是否唯一,IPV6首部中:目的地址是邻居的多播地址。

                     探测是否有其它的节点使用了该地址。(重复地址检测)

    (2)NS报文格式

   

 

类型:135,表示该ICMPV6报文是邻居请求报文。

代码:必须置0。

目的IPV6地址:即要解析的IPV6地址。

选项:发送此消息主机的链路层地址。

注:IPV6首部里,源IPV6地址:发送 NS 报文的接口地址;目的IPV6地址:被请求节点多播地址(地址解析或重复地址检测时)或单播的 Target 地址(邻居不可达检测时)。

  4、邻居通告报文NA(Neighbor Advertisement Message,NA)

类型:136,表示该ICMPV6报文是邻居通告报文。

代码:必须置0。

R:路由器(Router)标志。当 R 置 1 时,表示发送者是一个路由器。R比特用于邻居不可达检测机制,检测一个路由器是否改变为主机。

S:被请求(Solicited)标志。当 S 置 1 时,表示发送这个 NA 是用于响应一个 NS 的。  S 比特在邻居不可达检测机制中用于可达性的确认。在组播的NA(DAD)和主动发送的 NA 中,S 比特一定不能置 1。

O:重载(Override)标志。当 O 置 1 时,表示这个 NA 应该更新已存在的邻居缓存表项中的 link-layer 地址。当 O 置 0 时,只有在邻居缓存的表项中没有链路层地址时,这个 NA 才可以更新邻居缓存表项。

目的IPV6地址:对于被请求的 NA 消息,Target address 应与相应 NS 中的Target Address 相同。

选项:目标节点请求的链路层地址,响应多播的 NS 时(DAD、地址解析),必须使用该选项;响应单播的NS 时(NUD),可以使用该选项。

注:IPV6首部中,源 IPv6 地址:发送 NA 所用的接口的地址;目的 IPv6 地址:对于被请求的 NA 报文,目的地址为单播地址(使用 NS报文中的源 IPv6 地址);所响应的 NS 报文中源 IPv6 地址为未指定地址,或对于主动发送的 NA 报文,则目的地址使用所有节点组播地址(FF02::1)。

交互过程:

《1》地址解析

      (1)PC A在向PC B发送报文之前它要先解析出PC B的MAC地址,所以首先PC A会发送一个NS报文,其中源IP地址为PC A的IPv6地址,目的IP地址为PC B的被请求节点组播地址(前缀F02::1:F/104,并结合请求IPv6地址中的低24位,具体细节请参阅上一期),需要解析的目标IP为PC B的IPv6地址,这就表示PC A想要知道PC B的MAC地址。同时,NS报文还携带了PC A的MAC地址。
      (2)当PC B接收到了NS报文之后,就会回应NA报文,其中源地址为PC B的IPv6地址,目的地址为PC A的IPv6地址(使用NS报文中的PC A的MAC地址进行单播),同时包含PC B的MAC地址。这样就完成了一次地址解析的过程。

《2》跟踪邻居状态

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

RFC2461中定义了5种邻居状态,分别是:

  1. 未完成(Incomplete)
  2. 可达(Reachable)
  3. 陈旧(Stale)
  4. 延迟(Delay)
  5. 探查(Probe)

邻居状态的具体迁移过程如下图所示: 

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

  1. A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
  2. 若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
  3. 经过邻居可达时间,邻居状态由Reachable(默认30s)变为Stale,即未知是否可达。
  4. 如果在Reachable状态,A收到B的非请求NA报文(MAC地址修改),且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
  5. 在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
  6. 在经过一段固定时间后,邻居状态由Delay(默认5s)变为Probe(每隔1s发送一次NS报文,连续发送3次),其间若有NA应答,则邻居状态由Delay变为Reachable。
  7. 在Probe状态,A每隔一定时间间隔z(1s)发送单播NS,发送固定次数(3)后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。

 

《3》重复地址检测 

 

      重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候,进行DAD检测是很必要的。一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。

      IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。

重复地址检测原理如下:

      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状态。

 

三、本地链路地址:link-local address 

     当在一个节点启用IPV6,启动时节点的每个接口自动生成一个link-local address

其前缀64位为标准指定的,其后64位按EUI-64格式来构造

注意:在本链路上,路由表中看到的下一跳都是对端的Link Local地址,不是公网IP地址

前缀:FE80::/10

范围:只能在本地链路使用,不能在子网间路由

为何需要link-local?

--在一个接口可以配置很多IPv6地址所以学习路由就有可能出现很多下一跳。

所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。

在网络重新编址过程中,节点和路由器的Link Local地址不会发生变化,可以很容易地做一个修改,不用担心网络不可达。

   


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

相关文章

IPV6 邻居发现协议(NDP)

IPV6除了显著增加了地址空间外,另一个最显著的特征就是它的即插即用性。 邻居发现协议(Neighbor Discovery Protocol,NDP)就是使用以下的功能实现即插即用特性的协议: 路由器发现:当一个节点连接到一个IPV6的链路时,它…

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),尤其是萌新经常会遇到以下两个恶…

欧拉通路和欧拉回路

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