ICMPv6(Internet Control Message Protocol version 6),即互联网控制信息协议版本六。ICMPv6为了与
IPv6配套使用而开发的互联网控制信息协议。与
IPv4一样,
IPv6也需要使用ICMP,旧版本的ICMP不能满足IPv6全部要求,因此开发了新版本的ICMP,称为ICMPv6。
基本功能
互联网控制信息协议是
IP协议的一个重要组成部分。ICMPv6向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。在
IPv6中,ICMPv6实现
IPv4中
ICMP、
ARP和
IGMP的功能。
IANA(因特网地址授权委员会)定义ICMPv6的协议号为58。
ND和NI协议也是基于ICMPv6。
报文
封装
ICMPv6报文封装在IPv6中。
格式
ICMPv6报文总体上被分为两种类型:差错报文和信息报文。差错报文的识别是通过在消息类型字段值的高比特位中设置0。因此,差错报文的报文类型从0到127;信息报文的类型从128到255。
报文源地址的测定
一个送出ICMPv6报文的节点在计算校验和以前要在IPv6首部中决定源地址和目标IPv6地址。如果节点有多于一个的单目地址,它必须按以下的原则选定源地址:
校验和的计算
校验和16bit,计算范围包括两部分。
计算方法:
报文处理规则
相关协议
ICMPv6出了具备IPv4 ICMP的基本功能外,还包含以下两个功能:
(1)组播收听发现协议(MLD,Multicast Listener Discovery)
该协议完成子网内的组播成员管理。MLD协议定义了3条ICMPv6消息:
组播收听查询消息:组播路由器向子网内的组播收听者发送此消息,以获取组播收听者的状态。
组播收听者报告消息:组播收听者向组播路由器汇报当前状态,包括离开某个组播组。
组播收听者
(2)邻居发现协议(Neighbor Discovery)
邻居发现协议实现了IPv6种的地址解析协议(ARP)、ICMPv6路由器发现协议以及ICMPv6重定向消息的功能,用来管理同一链路上结点间的通信。
该协议定义五条ICMPv6消息:
路由器通告消息:该路由器以组播方式向所在链路发送,宣告其可用性及其相关的挽留过配置参数。该消息发送有两种方式,一种是非请求、周期性的路由器通告;另一种是请求的路由器通告,即收到主机发出的路由器请求后作为应答发出。
路由器请求消息:该消息由主机向本地路由器发出,要求其立即发送路由器通告消息。
邻居请求消息:结点发送邻居请求消息来请求邻居的链路层地址,以验证它先前所获得并保存在缓存中的邻居链路层地址的可达性,或者验证自己的地址在本地链路上是否唯一。
邻居通告消息:结点在收到邻居请求消息或链路层地址改变时,发送邻居通告消息,向邻结点通告自己的链路地址信息。
重定向消息:路由器发送重定向消息告诉主机重新定向它发送分组到目的结点的路径。