ICMPv6报文与邻居状态跟踪

本文介绍了ICMPv6报文的分类,包括错误报文(目的不可达、数据包过大、时间超时、参数错误)和信息报文。详细阐述了IPv6地址配置中的邻居发现协议NDP,描述了地址解析过程,涉及NS和NA报文,并解释了邻居状态跟踪的原理。
摘要由CSDN通过智能技术生成

ICMPv6报文

ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。
在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等等。
在这里插入图片描述
报文中字段解释如下:
Type:表明消息的类型,0-127表示差错报文类型,128255表示消息报文类型。
Code:表示此消息类型细分的类型。
Checksum:表示ICMPv6报文的校验和。

ICMPv6错误报文的分类

ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。ICMPv6错误报文可以分为以下4种:

目的不可达错误报文

在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文,同时报文中会携带引起该错误报文的具体原因。
目的不可达错误报文的Type字段值为1。根据错误具体原因又可以分为:
Code=0:没有到达目标设备的路由。
Code=1:与目标设备的通信被管理策略禁止。
Code=2:未指定。
Code=3:目的IP地址不可达。
Code=4:目的端口不可达。

数据包过大错误报文

在IPv6节点转发IPv6报文过程中,发现报文炒锅出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值,数据包过大错误报文是Path MTU发现机制的基础。
数据包过大错误报文的Type字段值为2,Code字段值为0。

时间超时错误报文

在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包,后者当设备将Hop Limit字段值减为0时,会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果炒锅定时时间,也会产生一个ICMPv6超时报文。
时间超时错误报文的Type字段值为3,根据错误具体原因又可以细分为:
Code=0:在传输中超越了跳数限制。
Code=1:分片重组超时。

参数错误报文

当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个ICMPv6参数错误差错报文。
参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:
Code=0:IPv6基本头或扩展头的某个字段有错误。
Code=1:IPv6基本头或扩展头的NextHeader值不可识别。
Code=2:扩展头重出现未知的选项。

ICMPv6信息报文的分类

ICMPv6信息报文提供诊断功能和附加的主机功能,比如多播侦听发现和邻居发现。常见GICMPv6信息报文主要包括会送请求报文(Echo Request)和回送应答报文(Echo Reply),这两种报文也就是通常使用的ping报文。
会送请求报文:会送请求报文用于发送到目标节点,以使目标节点立即发回一个会送应答报文。回送请求报文的Type字段值为128,Code字段的值为0。
会送应答报文:当收到一个会送请求报文时,ICMPv6回用会送应用报文响应。会送应答报文的Type字段的值为129,Code字段的值为0。

IPv6地址配置方式

IPv6邻居发现协议

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

地址解析

在IPv4,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,同样需要从IP地址解析到链路层底子好的功能。邻发现协议实现了这个功能。
ARP报文时直接封装在以太网报文中,以太网协议类型为0x806,普遍观点认为ARP定位为第2.5层的协议。ND本身基于ICMPv6实现,以太网协议类型为0x86DD ,即IPv6报文, IPv6下一个报文头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作第三层的协议。在三层完成地址解析,主要带来一下几个好处:
地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
可以使用三层的安全机制避免地址解析攻击。
使用组播方式发送请求报文,减少了二层网络的性能压力。
地址解析过程中使用了两种ICMPv6报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor Advertisement)。
NS报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。
NA报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的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字段中,这样就完成了一个地址解析的过程。

邻居状态跟踪

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。
在这里插入图片描述
1.A先发送NS报文,并生成缓存条目,此时,邻居状态为incomplete。

[AR1]display ipv6 neighbors
-----------------------------------------------------------------------------
IPv6 Address : 2001:1::2                                         
Link-layer   : 0000-0000-0000                     State : INCMP        
Interface    : GE0/0/0                            Age   : 0                   
VLAN         : -                                  CEVLAN: -                   
VPN name     :                                    Is Router: FALSE            
Secure FLAG  : UN-SECURE                          

--------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_Puter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值