ICMPv6是互联网控制消息协议第6版(Internet Control Message Protocol version 6)的缩写,它是IPv6协议族中的一个重要协议,与IPv4中的ICMPv4协议相对应。ICMPv6同样用于传递网络层的控制和错误信息,辅助IPv6协议完成高效、可靠的数据传输任务。
与ICMPv4雷同,ICMPv6报文封装在IPv6数据报中进行传输。报文主要由报头和数据部分组成。报头包含了类型、代码和校验和等重要信息,用于辨认报文的类型和检测传输错误,数据部分则携带了与具体报文类型相干的信息。 ICMPv6报文可以分为两大类:差错报告报文和信息报文。
(1) 差错报告报文用于向源节点关照在数据传输过程中遇到的各种错误情况:
类型代码名称描述10No route to destination无法路由到目标11Communication with destination administratively prohibited与目标通信被管理员禁止12Beyond scope of source address超出源所在的作用域13Address unreachable所在不可达14Port unreachable端口不可达15Source address failed ingress/egress policy源所在未通过入口/出口策略16Reject route to destination拒绝到目标的路由17Error in Source Routing Header源路由头部错误30Hop limit exceeded in transit传输过程中超过跳数限定31Fragment reassembly time exceeded分片重组超时40Erroneous header field encountered遇到错误的头部字段41Unrecognized Next Header type encountered遇到无法辨认的下一个头部类型42Unrecognized IPv6 option encountered遇到无法辨认的IPv6选项 类型1的目标不可达有多达8种情况,比如无法路由、所在或端口不可达、通信被禁止、超出作用域等,对应了在数据包转发过程中可能遇到的各种问题。 类型3的超时有2种情况,分别是超过跳数限定和分片重组超时。此中跳数限定反映了IPv6网络直径的限定,防止数据包无限循环转发。 类型4的参数问题有3种情况,分别涉及头部字段错误、无法辨认的下一个头部类型和IPv6选项,反映了数据包解析过程中可能遇到的问题。
2.4 ICMPv6差错报文限定
NDP定义了5种ICMPv6消息类型:路由器请求(RS, type 133)、 路由器公告(RA, type 134)、邻居请求(NS, type 135)、邻居公告(NA, type 136) 、重定向(Redirect, type 137)。
ICMPv6广泛在链路层和网络层使用组播所在,而IPv4主要是广播所在。不过ND并不倾向于采用链路层组播功能,因此在非广播和非组播链路层上的使用会有一些差别。
ND报文基于ICMPv6报文实现,发送时IPv6的跳数限定字段值会被设置为255,接收方会验证这个值,以防止被非本链路上的发送者给诱骗。
5.2 ICMPv6重定向报文