写点什么

NDP 常用报文格式

  • 2023-04-17
    陕西
  • 本文字数:1121 字

    阅读完需:约 4 分钟

NDP常用报文格式

邻居发现协议(Neighbor Discovery Protocol,NDP)是 IPv6 协议体系中最重要的基础协议之一,很多 IPv6 功能都依赖 NDP 来实现。一般说来,NDP 可以实现的功能包括:替代 IPv4 的 ARP 来形成邻居表;默认网关的自动获取;无状态地址自动配置;路由重定向等。


NDP 定义了 5 类 ICMPv6 报文,即路由器请求(Router Solicitor,RS)报文、路由器通告(Router Advertisement,RA)报文、邻居请求(Neighbor Solicitor,NS)报文、邻居通告(Neighbor Advertisement,NA)报文和路由重定向报文。这 5 种类型的 ICMPv6 报文都是消息类型的报文,用来实现邻居链路层地址解析、网关发现、地址自动配置和路由重定向等功能。

1、RS 报文

RS 报文供 IPv6 主机用以查找本地链路上存在的路由器,主机发送 RS 报文后会触发同网段的路由器立即回复 RA 报文,以获取前缀信息、MTU 信息等,而不用等待路由器周期性地发送 RA 报文。

2、RA 报文

路由器会周期性(思科路由器默认是 200 秒)地发送 RA 报文,向邻居节点通告自己的存在。RA 报文可以携带一些路由前缀、自身链路层等参数信息。

3、NS 报文

NS 报文用于查询邻居节点的链路层地址。NS 报文中的目的地址字段存放的是想要解析成链路层地址的 IPv6 单播地址。选项字段可以携带自身的链路层地址。当 NS 报文用于邻居可达性检测时,目的地址是单播地址;当用于邻居解析时,目的地址是被请求节点的组播地址 FF02::1:FF00:0/104 加目的单播地址的最后 24 位。IPv6 节点在检测 IPv6 地址冲突时,也会发送邻居请求报文,此时目的 IPv6 地址是被请求节点的组播地址 FF02::1:FF00:0/104 加自己 IPv6 地址的最后 24 位,若收不到回复则表示 IPv6 地址没有冲突,IPv6 地址配置生效。在实际配置中发现,在为 Windows 计算机配置 IPv6 地址时若存在地址冲突,不会弹出提示信息,这一点与 IPv4 地址的配置不同(在地址冲突时会弹出提示信息)。因此只能在命令行模式下执行 ipconfig 命令来查看 IPv6 地址是否生效。若没有生效,则可能是地址配置存在冲突。

4、NA 报文

IPv6 节点通过使用 NA 报文来通告自己的存在,或者告诉邻居需要更新自己的链路层地址信息。当节点发送 NA 报文来回应 NS 报文时,目的地址使用单播地址,如果目的是告诉邻居需要更新自己的链路层地址信息,则使用组播地址 FF02::1 作为目的地址。需要注意的是,路由器除了发送 RA 报文,也会发送 NA 报文。NA 报文中有 3 个标志位:当 R 位为 1 时表示此报文是由路由器发送的;当 S 位为 1 时表示这是 NS 报文的回复;当 O 位为 1 时则表示需要更改原先的邻居表条目。在 S 位为 1 的情况下,NA 报文的源地址字段是对应的 NS 报文中的目的地址字段,如果 S 位为 0,则 NA 报文的源地址就是自身需要更新链路层地址信息的接口 IPv6 地址。

5、路由重定向报文

当路由器收到一个报文时,若发现同网段有更好的下一跳,则向发送方发送重定向报文(这与 IPv4 类似)。


发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
NDP常用报文格式_NDP_穿过生命散发芬芳_InfoQ写作社区