1363 字
7 分钟
IPv6中的​ND​和​NA​

IPv6 中的 ​​ND​​ 和 ​​NA​​ 是 IPv6 核心协议——​​ 邻居发现协议 ​​ 中的两个关键组成部分。

1. ND - 邻居发现#

​ND​​ 是 ​​Neighbor Discovery​​ 的缩写,中文为 ​​ 邻居发现 ​​。

它不是一个单独的报文类型,而是 ​​ 一整套协议机制 ​​ 的总称。ND 协议定义了用于发现同一链路上(同一局域网内)其他节点、解析其 MAC 地址、发现路由器以及维护可达性信息的各种消息和过程。

​ND 协议的核心功能包括:​

  • ​ 地址解析 ​​:替代 IPv4 中的 ​​ARP​​ 协议。通过请求和通告来将 IPv6 地址解析为链路层地址(如 MAC 地址)。
  • ​ 路由器发现 ​​:主机如何发现本地链路上的路由器,并获取网络前缀和其他配置参数(用于 SLAAC)。
  • ​ 前缀发现 ​​:主机发现本地链路上的网络前缀。
  • ​ 参数发现 ​​:主机发现链路参数,如 MTU。
  • ​ 重复地址检测 ​​:主机在启用一个地址前,检查该地址是否已被链路上的其他节点使用。
  • ​ 邻居不可达检测 ​​:确定一个邻居(无论是主机还是路由器)是否仍然可达。
  • ​ 重定向 ​​:路由器通知主机存在一个更好的第一跳路由器用于到达特定目的地。

ND 协议主要通过交换 5 种类型的 ​​ICMPv6​​ 报文来实现这些功能:

ICMPv6 类型报文名称英文全称主要作用
​133​路由器请求​Router Solicitation (RS)​主机主动请求路由器发送 RA 报文
​134​路由器通告​Router Advertisement (RA)​路由器宣告其存在和网络前缀信息
​135​​ 邻居请求 ​​Neighbor Solicitation (NS)​用于地址解析、DAD、NUD
​136​​ 邻居通告 ​​Neighbor Advertisement (NA)​响应 NS 或主动通告地址变化
​137​重定向Redirect Message路由器指导主机使用更好的下一跳

从上面可以看出,​​NA​​ 正是 ​​ND​​ 协议框架下的一种具体报文类型。


2. NA - 邻居通告#

​NA​​ 是 ​​Neighbor Advertisement​​ 的缩写,中文为 ​​ 邻居通告 ​​。

它是 ND 协议中使用的 ​​ 一种具体的 ICMPv6 报文(类型 136)​​,是对 ​​ 邻居请求 ​​ 或某些情况下主动发出的响应报文。

​NA 报文的主要作用#

  1. ​ 响应邻居请求 ​​:
    • 当一台设备收到一个 ​​NS​​ 报文(例如,对方想解析你的 MAC 地址)时,它必须回一个 ​​NA​​ 报文作为响应。
    • ​ 示例 ​​:设备 A 想和设备 B(IPv6 地址为2001:db8::1)通信,但不知道 B 的 MAC 地址。A 会发送一个 NS 报文(目标地址是 B 的请求节点多播地址),问“谁是2001:db8::1?请告诉你的 MAC 地址”。设备 B 收到后,会回一个 NA 报文(单播给 A),说“我是2001:db8::1,我的 MAC 地址是 xx:xx:xx:xx:xx”。
  2. ​ 主动通告 ​​:
    • 设备可以在未收到请求的情况下,主动发送 NA 报文来通知链路上的其他设备其链路层地址的变更。这有助于网络中的其他设备迅速更新它们的邻居缓存,类似于 IPv4 中的 gratuitous ARP。
  3. ​ 完成重复地址检测 ​​:
    • 在 DAD 过程中,一台设备会给自己想要的地址发送一个 NS 报文。如果这个地址已经被使用,那么该地址的所有者就会回一个 NA 报文,宣告“这个地址我正在用!”,从而阻止请求设备使用该地址。
  4. ​ 告知路由信息 ​​:
    • NA 报文中有一个重要的标志位——​​Router Flag​​。当这个标志位被设置时,表明发送者是一台路由器。这对于主机维护默认网关列表非常重要。

​NA 报文中的重要字段 ​#

  • ​ 目标地址 ​​:NA 报文所通告的 IPv6 地址。
  • ​R 位 ​​:路由器标志。1 表示发送者是路由器,0 表示是主机。
  • ​S 位 ​​:请求标志。1 表示该 NA 是对一个 NS 请求的响应。​​ 主动发送的 NA 报文 S 位为 0​​。
  • ​O 位 ​​:覆盖标志。1 表示通告的内容应覆盖现有的缓存条目。通常 DAD 过程会设置 O=0,而地址解析响应会设置 O=1。
  • ​ 选项 ​​:通常包含发送者的 ​​ 链路层地址 ​​(如 MAC 地址)。

总结与关系#

特性​ND​​NA​
​ 定义 ​​ 一套完整的协议和功能集合 ​​ 一种具体的 ICMPv6 报文类型 ​
​ 角色 ​​ 总体框架 ​​,相当于“​​ 地址解析和邻居管理系统 ​​”​ 具体工具 ​​,相当于该系统下的“​​ 响应和通告消息 ​​”
​ 类比 ​类似于一整套“​​ 邮政投递系统 ​​”,包括写信、送信、查地址等规则。类似于这个系统中一种特定类型的“​​ 回信 ​​”或“​​ 地址变更通知单 ​​”。
​ 关系 ​​ND​​ 协议定义了何时以及为何要使用 ​​NA​​ 报文。​NA​​ 是实现 ​ND​​ 协议核心功能(如地址解析)的关键报文之一。

简单来说:
​ND​​ 是“​​ 做什么和为什么做 ​​”(功能),而​NA​​ 是“​​ 怎么做 ​​”的一种方式(实现功能的报文)。没有 ND 协议的定义,NA 报文就失去了意义;而没有 NA 报文,ND 的许多功能也无法实现。