IPv6 - 通信
IPv6 - 通信 (Communication)
Section titled “IPv6 - 通信 (Communication)”在 IPv4 中,主机通常通过 DHCP (动态主机配置协议) 或手动配置获取 IP 地址以进行通信。第 3 层 (Layer 3) 通信需要知道目标 IP 地址。在第 2 层 (Layer 2),使用 MAC 地址 (Media Access Control address,媒体访问控制地址)。IPv4 使用 ARP (Address Resolution Protocol,地址解析协议) 通过广播 ARP 请求来解析已知的 IP 地址到未知的 MAC 地址。
IPv6 显著改变了这一模式。ARP 使用的广播被组播 (multicast) 取代。IPv6 主机可以通过多种方式配置其 IP 地址,包括手动配置、有状态 DHCPv6 或 SLAAC (Stateless Address Autoconfiguration,无状态地址自动配置)。SLAAC 允许主机生成自己的唯一的链路本地地址 (link-local address),并且可能生成全局地址 (global addresses),而无需 DHCP 服务器。
ARP 的功能被 NDP (Neighbor Discovery Protocol,邻居发现协议) 取代,NDP 使用 ICMPv6 (Internet Control Message Protocol version 6,互联网控制报文协议版本6) 消息进行操作。NDP 处理地址解析 (address resolution)、路由器发现 (router discovery)、重复地址检测 (duplicate address detection) 等功能。
邻居发现协议 (NDP)
Section titled “邻居发现协议 (NDP)”NDP (RFC 4861) 是 IPv6 的基础组成部分。当 IPv6 主机在网络上初始化时,它会执行几个与 NDP 相关的操作:
- 链路本地地址生成 (Link-Local Address Generation):主机首先生成一个链路本地地址(通常在 fe80::/10 前缀中,形成一个 fe80::/64 地址)。此地址是本地链路 (local link) 上通信所必需的,包括后续的 NDP 过程。
- 重复地址检测 (DAD - Duplicate Address Detection):在使用任何单播 (unicast) IPv6 地址(链路本地地址或全局地址)之前,主机必须验证其在该链路上的唯一性。它会发送一个邻居请求 (NS - Neighbor Solicitation) 消息,其中包含待定地址作为目标。该 NS 被发送到从待定地址派生出的被请求节点组播地址 (solicited-node multicast address)。如果另一台主机已经在使用此地址,它将回复一个邻居通告 (NA - Neighbor Advertisement),则新主机不得使用该地址。
- 邻居请求 (NS - Neighbor Solicitation):在 DAD 确认地址是唯一的之后,或者为了解析地址,主机向目标 IPv6 地址的被请求节点组播地址发送 NS 消息。如果目标主机在链路上 (on-link),它会回复一个邻居通告。
- 邻居通告 (NA - Neighbor Advertisement):此消息作为对 NS 消息的响应发送,或者未经请求地发送以宣告链路层地址的改变。它包含发送者的 IPv6 地址及其链路层 (MAC) 地址。
- 路由器请求 (RS - Router Solicitation):为了查找链路上的路由器并获取用于自动配置的网络配置信息,主机向所有路由器组播地址 (FF02::2) 发送 RS 消息。
- 路由器通告 (RA - Router Advertisement):链路上的路由器响应 RS 消息(或定期发送)发送 RA 消息。RA 包含用于 SLAAC 的网络前缀 (network prefixes)、默认网关生存期 (default gateway lifetime) 和其他参数(例如,MTU (Maximum Transmission Unit, 最大传输单元)、通过 RDNSS option 获取的 DNS 服务器地址)等信息。
- 重定向 (Redirect):如果路由器收到一个报文,其目的地应该通过不同的链路上路由器到达,它可以向源主机 (source host) 发送一个 ICMPv6 重定向消息,通知它针对特定目标的更好下一跳 (next-hop)。
通过这些 NDP 消息,主机可以自动配置其地址 (SLAAC),解析邻居的链路层地址,查找路由器,并维护链路上邻居的可达性信息。这使得 IPv6 网络设置更加动态,并且在基本连接方面更少依赖手动或基于 DHCP 的配置。