ICMPv6邻居通告消息

报文格式

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

    当对端节点由于没有缓存条目从而不能返回一个Neighbor Advertisements消息时,为了避免无休止的Neighbor Solicitation“递归”,对于多播请求必须包括 此选项。当响应单播请求时,可忽略此选项,因为请求的发送者有正确的链路层地址;其他情况,此选项不能在第一位置发送单播请求。然而,在此情况,包括链路层地址仅增加了少许开销,却消除了潜在的竞争条件,那里在收到对先前的请求的响应之前,发送者删除缓存的链路层地址。

    为TLV格式:

    • Type: =2,字段长度为1字节。
    • Length: 1字节,表示选项的长度(包括类型字段和长度字段),以8字节为单位计算。例如,IEEE802 地址的长度是1。
    • Link-Layer Address: 可变长度的链路层地址。此字段的内容和形式(包括字节和比特顺序)一般由描述IPv6在不同链路层上如何运行的特定文件中规定。

报文示例

图2 Example for ICMPv6 Neighbor Advertisement MessageICMPv6邻居通告报文示例

参考标准

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

本资料收集于互联网
2016 ©