Skip to main content

ICMPv6报文格式

ICMPv6(Internet Control Message Protocol version 6)是IPv6网络使用的控制消息,功能类似于IPv4网络的ICMP。

  • ICMPv6报文通用格式

  • ICMPv6 Echo消息 用于检测IPv6网络连通性的Ping/Tracert,是通过发送ICMPv6 Echo (回显请求/应答)消息实现的。

  • ICMPv6目的不可达消息 当IPv6路由设备无法转发或者交付IPv6数据报时,会向源站发送一个ICMPv6目的不可达消息,然后丢弃该数据报。

  • ICMPv6重定向消息 ICMPv6重定向消息是ICMPv6控制报文中的一种。在特定的情况下,当路由器检测到一台主机或网络设备使用非优化路由的时候,它会向该主机或网络设备发送一个ICMPv6重定向报文,请求主机或网络设备改变路由。路由器也会把初始数据报向它的目的地转发。

  • ICMPv6包太大(Too Big)消息 如果IPv6节点收到的IPv6数据包超过出接口的IPv6 MTU时,丢弃该数据包并返回ICMPv6包太大(Too Big)消息。IPv6的路径MTU(Path MTU)机制中会用到此消息。ICMPv6消息封装在IPv6报文中,IPv6首部携带了一个或多个IPv6扩展头,扩展头中的Next Header字段值为58(0x3a)。

  • ICMPv6超时消息 当收到TTL为0的报文时,IPv6网络设备/主机会丢弃该报文,并返回一个ICMPv6超时消息。

  • ICMPv6参数错误消息 如果发现接收的数据包存在报文头参数有问题,无法完成数据包解析时,IPv6网络/主机会将数据包丢弃,并可能会返回一个ICMPv6参数问题消息给源端。

  • ICMPv6路由器请求RS(Router Solicitation)消息 主机启动后,通过ICMPv6路由器请求RS(Router Solicitation)消息报文向路由设备发出请求,路由设备则会以RA报文响应。

  • ICMPv6路由器通告RA(RouterAdvertisement)消息 IPv6路由器周期性发送ICMPv6路由器通告RA(RouterAdvertisement)消息,或者在收到路由请求RS(Router Solicitation)消息时回应ICMPv6 RA消息。ICMPv6 RA消息包括前缀和一些标志位的信息。

  • ICMPv6邻居请求NS(Neighbor Solicitation)消息 IPv6节点通过邻居请求NS(Neighbor Solicitation)消息可以得到邻居的链路层地址,检查邻居是否可达,也可以进行重复地址检测。

  • ICMPv6邻居通告NA(Neighbor Advertisement)消息 ICMPv6邻居通告NA(Neighbor Advertisement)消息是IPv6节点对ICMPv6邻居请求NS(Neighbor Solicitation)消息的响应,同时IPv6节点在链路层变化时也可以主动发送NA消息。

协议栈结构

ICMPv6消息封装在IPv6报文中,IPv6首部携带了一个或多个IPv6扩展头,扩展头中的 Next Header 字段值为58(0x3a)。

ICMPv6消息封装格式
+-------------------------------+
|             ICMPv6           |
+-------------------------------+
|     IPv6 (Protocol = 0x3a)   |
+-------------------------------+
|             L2               |
+-------------------------------+
|             L1               |
+-------------------------------+

ICMPv6报文通用格式

ICMPv6报文通用格式
  0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                         Message Body                          +
|                                                               |
ICMPv6报文通用报文字段解释
字段 长度 描述
Type 1B 定义了报文的类型,该字段决定了其它部分的报文格式。Type字段的取值和含义如ICMPv6报文类型对应表所示。
Code 1B 该字段依赖TYPE字段,在TYPE字段的基础上,它被用来在基本类型上创建更详细的报文等级。该字段的取值和含义如ICMPv6报文类型对应表所示。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Message Body 可变 大体上说,ICMPv6报文可以被分为2大类:差错报文与消息报文。这2类报文是依靠报文中的TYPE字段来标识的,当TYPE字段的最高位置0,即在0~127范围时(TYPE字段长度为1字节),被标识为差错报文,TYPE字段值为128~255范围时,则标识为消息报文。详细请参见ICMPv6报文类型对应表

ICMPv6报文类型

ICMPv6报文类型对应表
Type Code 消息名
1
0 没有路由到达目的地
1 与目的地的通信由于管理被禁止
2 超过了源地址的范围
3 地址不可达
4 端口不可达
5 源地址的入口/出口策略失败
6 拒绝路由到达目的地
2 0 包太大
3
0 传输过程中“hop-limit”超时
1 分片重组超时
4
0 参数错误
1 错误的首部字段
2 不可识别的Next Header类型
3 不可识别的IPv6选项
100 x 私有实验用
101 x 私有实验用
127 x ICMPv6差错报文扩展保留
128 0 回显请求
129 0 回显应答
133 x 路由请求
134 x 路由通告
135 x 邻居请求
136 x 邻居通告
137 x 重定向
143 x 组播MLDv2 (Multicast Listener Report Message v2)消息
200 x 私有实验用
201 x 私有实验用
255 x ICMPv6消息报文扩展保留

ICMPv6 Echo消息

用于检测IPv6网络连通性的Ping/Tracert,是通过发送ICMPv6 Echo (回显请求/应答)消息实现的。

ICMPv6 Echo消息的格式
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------------------------------+
|     Type     |     Code     |         Checksum             |
+---------------+---------------+-------------------------------+
|           Identifier         |       Sequence Number       |
+-------------------------------+-------------------------------+
|     Data ...
+---------------
ICMPv6 Echo消息字段解释
字段 长度 含义
Type 1B 消息类型:128: Echo Request 129: Echo Reply
Code 1B 消息代码,此处值为0。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Identifier 2B 请求与应答报文能够彼此匹配的一个标识,可能是全0。
Sequence Number 2B 请求与应答报文能够彼此匹配的一个标识,可能是全0。
Data 变长 0或任意数据的8位组。

ICMPv6目的不可达消息

当IPv6路由设备无法转发或者交付IPv6数据报时,会向源站发送一个ICMPv6目的不可达消息,然后丢弃该数据报。

ICMPv6目的不可达消息的格式
  0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Unused                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    As much of invoking packet                 |
+                as possible without the ICMPv6 packet          +
|                exceeding the minimum IPv6 MTU [IPv6]          |
ICMPv6目的不可达消息字段含义
字段 长度 含义
Type 1B 消息类型,此处值为1。
Code 1B 消息代码,详细代码请参见ICMPv6报文类型对应表
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
unused 4B 该字段对所有的code值均未使用。在报文的发送端,该字段必须被初始化为0,且在接收端,该字段应该被忽略。

ICMPv6重定向消息

ICMPv6重定向消息是ICMPv6控制报文中的一种。在特定的情况下,当路由器检测到一台主机或网络设备使用非优化路由的时候,它会向该主机或网络设备发送一个ICMPv6重定向报文,请求主机或网络设备改变路由。路由器也会把初始数据报向它的目的地转发。

ICMPv6重定向消息的格式
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type     |     Code     |         Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                       Target Address                         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                     Destination Address                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
ICMPv6重定向消息字段含义
字段 长度 含义
Type 1B 消息类型,此处值为137。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Reserved 4B 此字段未使用。它必须由发送者初始化为0,接收者必须忽略它。
Target Address 16B 更好的下一跳地址。当目标是实际通信端点时,即,目的地是邻居,Target Address字段必须包括与ICMP Destination Address字段相同的值。其他情况,目标是更好的第一跳路由器并且Target Address必须是该路由器的链路本地地址,以便主机能够唯一地识别路由器。
Destination Address 16B 重定向到目标的目的地的IP地址。
Options 可变 选项,TLV格式。

ICMPv6包太大(Too Big)消息

如果IPv6节点收到的IPv6数据包超过出接口的IPv6 MTU时,丢弃该数据包并返回ICMPv6包太大(Too Big)消息。IPv6的路径MTU(Path MTU)机制中会用到此消息。ICMPv6消息封装在IPv6报文中,IPv6首部携带了一个或多个IPv6扩展头,扩展头中的Next Header字段值为58(0x3a)。

ICMPv6包太大消息的格式
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type     |     Code     |         Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             MTU                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   As much of invoking packet                 |
+               as possible without the ICMPv6 packet           +
|               exceeding the minimum IPv6 MTU                 |
ICMPv6包太大消息字段解释
字段 长度 含义
Type 1B 消息类型,此处值为2。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
MTU 4B 下一跳链路的最大传输单元。

ICMPv6参数错误消息

如果发现接收的数据包存在报文头参数有问题,无法完成数据包解析时,IPv6网络/主机会将数据包丢弃,并可能会返回一个ICMPv6参数问题消息给源端。

ICMPv6参数错误消息的格式
+0-------7-------15---------------31
| Type   | Code |   Checksum   |
+----------------------------------
|             Pointer           |
+---------------------------------+
|       As much of invoking     |
|   packet as possible without   |
|   the ICMPv6 packet exceeding   |
|     the minimum IPv6 MTU       |
+---------------------------------+
ICMPv6参数错误消息字段解释
字段 长度 含义
Type 1B 消息类型,此处值为4。
Code 1B 0 – 错误的首部字段; 1 – 不可识别的Next Header类型; 2 – 不可识别的IPv6选项。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Pointer 4B 标识出报文中出现错误地方的8位片偏移量;若原报文中出现错误的地方在ICMPv6差错报文达到最大长度时也不能被包括在内,指针的值将超过ICMPv6差错报文的长度。

ICMPv6路由器请求RS(Router Solicitation)消息

主机启动后,通过ICMPv6路由器请求RS(Router Solicitation)消息报文向路由设备发出请求,路由设备则会以RA报文响应。

ICMPv6路由器请求消息的格式
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type     |     Code     |         Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
ICMPv6路由器请求消息字段解释
字段 长度 含义
Type 1B 消息类型,此处值为133。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Reserved 4B 此字段不使用。它必须由发送者初始化为0,接收者必须忽略它。
Options 可变 选项

ICMPv6路由器通告RA(RouterAdvertisement)消息

IPv6路由器周期性发送ICMPv6路由器通告RA(RouterAdvertisement)消息,或者在收到路由请求RS(Router Solicitation)消息时回应ICMPv6 RA消息。ICMPv6 RA消息包括前缀和一些标志位的信息。

ICMPv6路由器通告消息的格式
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cur Hop Limit |M|O| Reserved | Router Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reachable Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retrans Timer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
ICMPv6路由器通告消息字段解释
字段 长度 含义
Type 1B 消息类型,此处值为134。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Cur Hop Limit 1B 8位无符号整数。默认值应当放置在发出IP分组的IP首部的Hop Count字段中。 取0值意味着未(由该路由器)规定。
M 1bit 1位“管理地址配置”标记。当置1时,它指出地址可通过Dynamic Host Configuration协议获得。如果M标记置1,则O标记为冗余,可以忽略,因为DHCPv6将返回所有可用配置信息。
O 1bit 1位“其他配置”标记。当M=0且O=1时,指示其他配置信息可通过DHCPv6获得。例如,这类信息包括DNS相关信息或关于网络内其他服务器的信息。如果M=0且O=0,指示没有信息可通过DHCPv6获得。
Reserved 6bits 6位未使用字段。它必须由发送者初始化为0,接收者必须忽略它。
Router Lifetime 2B 16位无符号整数。与默认路由器关联的生存期,以秒为单位。最大值18.2小时。取0值的Lifetime指出路由器不是默认路由器并且不应当出现在默认路由器列表中。Router Lifetime仅适用于作为默认路由器的路由器应用;对包括在其他消息字段或选项中的信息不适用。需要对它们的信息规定时间限制的选项有它们自己的生存期字段。
Reachable Time 4B 32位无符号整数。此时间以毫秒计,在收到可达性确认后节点假定该邻居是可到达的。它由Neighbor Unreachability Detection算法使用(参阅第7-3节)。此值为0意味着没有(由此路由器)作出规定。
Retrans Timer 4B 32位无符号整数。重发的Neighbor Solicitation消息间隔时间,以毫秒计。由地址解析和Neighbor Unreachability Detection算法使用。此值为0意味着没有(由此路由器)作出规定。
Options 可变 选项

ICMPv6邻居请求NS(Neighbor Solicitation)消息

IPv6节点通过邻居请求NS(Neighbor Solicitation)消息可以得到邻居的链路层地址,检查邻居是否可达,也可以进行重复地址检测。

ICMPv6邻居请求消息
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Target Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
ICMPv6邻居请求消息字段含义
字段 长度 含义
Type 1B 消息类型,此处值为135。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
Reserved 4B 此字段不使用。它必须由发送者初始化为0,接收者必须忽略它。
Target Address 16B 请求的目标的IP地址。它必须不是多播地址。
Options 可变 选项

ICMPv6邻居通告NA(Neighbor Advertisement)消息

ICMPv6邻居通告NA(Neighbor Advertisement)消息是IPv6节点对ICMPv6邻居请求NS(Neighbor Solicitation)消息的响应,同时IPv6节点在链路层变化时也可以主动发送NA消息。

ICMPv6邻居通告NA
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|S|O| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Target Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
ICMPv6邻居通告NA消息字段解释
字段 长度 含义
Type 1B 消息类型,此处值为136。
Code 1B 该ICMPv6差错报文的始发者必须将该字段置为0,且接收端忽略该字段。
Checksum 2B 用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
R 1bit 路由器标记。当置1时,R位指出发送者是路由器。R位由Neighbor Unreachability Detection使用,用于检测改变为主机的路由器。
S 1bit 请求标记。当置1时,S位指出通告被发送以响应来自目的地地址的Neighbor Solicitation。S位用作Neighbor Unreachability Detection的可达性确认。在多播通告和非请求单播通告中置0。
O 1bit 替代标记。替代标志,1表示通告中的信息替代缓存,如更新链路层地址时,对于任播的回应则不应置位。在针对任播地址的请求通告中,以及在请求的前缀通告中它不能被置1。在其他请求通告中和在非请求通告中它应当被置1。
Reserved 29bits 29位未使用字段。它必须由发送者初始化为0,接收者必须忽略它。
Target Address 16B 对于请求的通告,是在Neighbor Solicitation消息(该消息催促这个通告)中的Target Address字段。对于非请求通告,是其链路层地址已经改变的地址。Target Address必须不是多播地址。
Options 可变 选项

Options

ICMPv6 Options格式
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ... ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Options Type Code
Option Name Type 说明
Source Link-Layer Address 1 该选项包含数据包发送方的链路层地址。它用于 Neighbor Solicitation、Router Solicitation 和 Router Advertisement 数据包。对于其他邻居发现消息,必须默默地忽略该选项。
Target Link-Layer Address 2 该选项包含目标的链路层地址。它用于Neighbor Advertisement和重定向数据包。对于其他邻居发现消息,必须默默地忽略该选项。
Prefix Information 3 该选项为主机提供链路上前缀和地址自动配置前缀。该选项出现在 Router Advertisement 数据包中,出现在其他消息中会被静默忽略。
Redirected Header 4 该选项用于重定向消息,包含被重定向的全部或部分数据包。
MTU 5 该选项用于路由器广告消息中,以确保在链路 MTU 未知的情况下,链路上的所有节点都使用相同的 MTU 值。
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+-------------------------------+
| Type | Length | Link-Layer Address ...
+---------------+---------------+-------------------------------+
Prefix Information
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Prefix Length |L|A| Reserved1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Valid Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Preferred Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Prefix ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Redirected Header
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ IP header + data ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MTU
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

参考标准

标准 描述
RFC 2461 Neighbor Discovery for IP Version 6 (IPv6)
RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification