ICMPv6
ICMPv6(Internet Control Message Protocol for the Internet Protocol Version 6)是IPv6网络使用的控制消息,IPv6的基础协议之一,功能类似于IPv4网络的ICMP。
ICMPv6报文格式
ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58 ,ICMPv6报文的报文格式如图1-1所示。
报文中各个字段的解释如下:
Type字段表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。
Code字段表示此消息类型细分的类型。
Checksum表示ICMPv6报文的校验和。
ICMPv6报文的分类
ICMPv6报文具有差错报文和信息报文两种。在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻居发现、无状态地址配置(包括重复地址检测)、PMTU发现、MLD等。
类别 |
Type |
名称 |
Code |
应用 |
---|---|---|---|---|
ICMPv6差错报文 |
1 |
目的不可达错误报文 |
0 没有到达目标设备的路由。 |
在IPv6节点转发IPv6报文过程中,发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文。同时报文中会携带引起该错误报文的具体原因。 |
1 与目标设备的通信被管理策略禁止。 |
||||
2 未指定。 |
||||
3 目的IP地址不可达。 |
||||
4 目的端口不可达。 |
||||
2 |
数据包过大错误报文 |
0 |
在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。 |
|
3 |
时间超时错误报文 |
0 传输过程中“hop-limit”超时。 |
在IPv6报文收发过程中,当路由器收到Hop Limit值等于0的数据包,或者当路由器将HopLimit值减为0时,会向报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会产生一个ICMPv6超时报文。 |
|
1 分片重组超时。 |
||||
4 |
参数错误报文 |
0 IPv6基本头或扩展头的某个字段有错误。 |
当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现以下问题会向报文的源节点回应一个ICMPv6参数错误差错报文。
|
|
1 IPv6基本头或扩展头的NextHeader值不可识别。 |
||||
2 扩展头中出现未知的选项。 |
||||
ICMPv6信息报文 |
128 |
请求信息(Echo Request) |
0 |
在两节点的互通性检测中,收到Echo Request报文的节点向源节点回应Echo Reply报文,实现两节点间报文的收发。 |
129 |
应答信息(Echo Reply) |
0 |
||
130 |
组播侦听器查询消息(multicast-listener-query) |
0 |
在用户主机和与其直接相邻的组播设备之间建立、维护组播组成员关系。 |
|
131 |
多播侦听器报告消息(multicast-listener-report) |
0 |
||
132 |
多播侦听器完成消息(multicast-listener-done) |
0 |
||
133 |
路由器请求报文(router-solicitation) |
0 |
相对于IPv4中的ARP来说, ND协议中除了类似于ARP中的地址解析外,还包含了路由发现、重定向等功能。
|
|
134 |
路由器通告报文(router-advertisement) |
0 |
||
135 |
邻居请求报文(neighbor-solicitation) |
0 |
||
136 |
邻居通告报文(neighbor-advertisement) |
0 |
||
137 |
重定向报文(redirect) |
0 |
||
143 |
版本2组播侦听器报告消息(multicast-listener-report-v2) |
0 |
MLD是负责IPv6组播成员管理的协议,MLDv2版本可以直接应用于SSM模型,实现组成员关系的维护与管理,同时支持与上层组播路由协议的信息交互。 |
|
…… |
…… |
…… |
…… |