1. IPv6地址结构

IPv6 地址长度为 128 位,相对于 IPv4 的 32 位地址,提供了 个地址空间,从根本上解决了地址枯竭问题。在标准表示法中,128 位地址被划分为八个 16 位的字段,每个字段以四个十六进制数字表示,字段之间使用冒号(:​)分隔。这种格式使得 128 位地址以 32 个十六进制数字的形式呈现。

与 IPv4 的传统表示不同,IPv6 沿用了无类别域间路由(CIDR)的表示方法,即地址后跟斜杠和前缀长度,格式为​ipv6-address/prefix-length​。在 IPv6 中,不存在类似 IPv4 中 255.255.x.x 的点分十进制子网掩码表示。

地址压缩规则与规范化(RF 5952)

IPv6 地址长度巨大,为了提高可读性和实用性,RFC 5952 定义了标准的地址压缩规则。这些规则旨在在不损失信息的前提下,最大程度地缩短地址的文本表示。

(a) 前导零抑制 (Leading Zero Compression)

前导零抑制规则允许在每个 16 位字段(Hextet)内省略所有前导零。例如,0123​ 可被压缩为 123​0012​ 压缩为 12​,而 0001​ 压缩为 1​。如果一个字段的所有四位都是零 (0000​),在不使用双冒号替换的情况下,仍必须保留一个零来表示该字段。此规则仅适用于前导零,字段内的尾随零(例如1000​)不能被省略。

(b) 零块压缩 (Zero Block Compression)

零块压缩规则是 IPv6 缩短表示法的核心。它允许将一个或多个连续的、全零的 16 位字段序列替换为双冒号(::​)符号。

这项规则存在一个至关重要的限制:双冒号 (::​) 在一个完整的 IPv6 地址中只能使用一次。因为如果允许在一个地址中使用两次双冒号,系统将无法确定每个双冒号各自代表了多少个全零字段,从而无法准确地重建原始的 128 位地址,导致地址解析出现歧义。例如,地址​A::B::C​ 无法确定总共缺少多少个字段。为了确保地址表示的规范形式,当地址中存在多个连续的零字段序列时,::​ 必须用于替换最长的零字段序列。如果存在两个或更多长度相等的零字段序列,则标准规定应替换最左边(靠前)的序列。这种严格的规范化要求确保了地址表示的确定性,这对于网络设备进行日志记录、路由查找和互操作性至关重要。

2. IPv6地址分类

单播地址

单播地址是网络层标识符,用于标识一个启用了 IPv6 的节点上的单个接口。发送到单播地址的数据包将仅递送到配置了该地址的目标接口。典型的单播地址结构由两个逻辑部分组成:前 64 位为网络前缀(用于全球路由),后 64 位为接口标识符(IID,用于标识主机接口)。

多播地址

多播地址标识一组接口的集合,这些接口可能属于不同的 IPv6 节点。发送到多播地址的数据包将被递送到所有由该地址标识的接口。所有多播地址均通过其高阶 8 位的值来区分,即所有多播地址都以十六进制FF 开头),属于 FF00::/8 空间。

多播地址只能作为数据包的目的地址;一个多播地址绝对不能作为数据包的源地址。

任意播地址 (Anycast)

任意播地址是 IPv6 引入的新特性之一,它标识一组接口的集合,这些接口可能位于地理上分散的不同节点上。当数据包发送到任意播地址时,路由协议会确保数据包被递送到距离最近的那个接口。这使得任意播成为实现服务冗余、负载均衡和地理分散的关键工具(例如 DNS 根服务器)。任意播地址在格式上没有特定的保留前缀,它们使用标准的单播地址格式。当一个单播地址被分配给多个设备并在路由协议中宣告时,它便具有了任意播的功能。

不再使用广播地址

IPv6 架构中不再使用广播地址,IPv4 的广播流量必须被本地子网上的所有设备处理,消耗了所有节点的资源。在 IPv6 中,局域网内的广播功能被链路本地多播(例如邻居发现协议 NDP 使用的地址)所取代。这种转变确保了只有加入特定多播组的节点才会处理流量,实现了网络资源的优化利用,是 IPv6 高可扩展性的基础。

3. 单播地址及特殊用途地址

全球单播地址 (Global Unicast Addresses, GUA)

GUA 是在互联网上全球可路由的地址。其结构由路由前缀、子网 ID 和接口 ID 组成。当前,IANA 和区域互联网注册机构(RIRs)主要从2000::/3​ 空间分配地址。

链路本地地址 (Link-Local Addresses, LLA)

链路本地地址是所有启用了 IPv6 的接口上必须配置的地址。它们仅用于本地链路上的通信(例如邻居发现协议 NDP),不可被路由器转发出本地链路。LLA 的前缀范围理论上定义为 FE80::/10(前 10 位为 1111 1110 10),这意味着其起始的十六进制字段可以是 fe80fe90fea0 feb0。但在实际应用中,由于其后的 54 位通常设置为零,因此有效的操作范围被限制为FE80::/64

唯一本地地址 (Unique Local Addresses, ULA)

ULA 地址的功能类似于 IPv4 的 RFC 1918 私有地址空间,它们用于内部路由,但明确规定不应在公共互联网上路由。ULA 地址空间定义在FC00::/7​ 前缀下。

目前,只有 FD00::/8​ 范围被视为有效且推荐使用(其中第 8 位的 L 标志被设置为 1,表示“本地分配”)。ULA 地址结构中包含一个随机生成的 40 位全局 ID,旨在最大程度地降低在组织网络合并时可能发生的地址冲突风险 。

回环地址 (Loopback):

IPv6 仅使用一个回环地址 ::1/128​ (0000:0000:0000:0000:0000:0000:0000:0001​)。回环地址用于测试本地 TCP/IP 协议栈是否正常运行,功能与 IPv4 的127.0.0.1 相同 。与 IPv4 预留整个127.0.0.0/8 范围相比,IPv6 仅分配单个地址。

任意播保留地址

任意播地址通常使用单播地址空间。但特定用途的任意播地址被保留,例如移动 IPv6 Home Agent Anycast 地址使用接口 ID 中最低有效7位的0x7e​ 值。

单播地址总结

地址类型前缀范围作用/用途可路由性举例
GUA (Global Unicast Address)全局单播地址2000::/3​(即 2000:0000::3fff:ffff::类似 IPv4 公网地址用于互联网通信可在全球互联网路由2001:db8::1
LLA (Link-Local Address)链路本地地址fe80::/10​必须存在每个接口自动生成只能在本链路通信(邻居发现、路由协议)仅在链路内有效不可路由fe80::1​
ULA (Unique Local Address)唯一本地地址fc00::/7​(常用fd00::/8​)类似 IPv4 私网地址用于站点内部通信不能在全球路由可在本地组织内部使用fd12:3456:789a::1
Loopback 回环地址::1/128表示本机自身用于测试和本地进程通信仅限本地主机::1
Anycast 任意播地址无单独前缀(来自单播地址池)一个地址分配给多个节点请求会路由到“最近的”节点可路由常见示例:2001:4860:4860::8888​(Google DNS Anycast)
保留地址::/128​(未指定地址)100::/64​(IPv6 映射 IPv4)2000::/3​外的实验段等特殊用途,由 IETF 分配保留视情况而定::​(未指定地址)、64:ff9b::/96​(NAT64)

LLA 与 ULA 对比

特性LLA (Link-Local)ULA (Unique Local)
地址前缀fe80::/10​fc00::/7​(常用fdxx::/8​)
生成方式自动生成,接口必有管理员分配,类似 IPv4 私有地址
作用范围仅限单个链路整个站点或组织内
是否必须存在是,IPv6 接口必有否,按需配置
路由特性不能跨路由可跨路由,但不在公网传播
典型用途邻居发现、路由协议、点对点通信内部通信、私网互联、VPN

4. 多播地址结构

所有多播地址均属于 FF00::/8 空间,多播地址结构如下:

字段长度 (位)描述
前缀 (Prefix)811111111 (FF)​,标识多播地址。
标志位 (Flags)4000T​。高三位保留为零。T 标志 (Transient) 指示地址是永久分配 (T=0) 还是临时分配 (T=1)。
作用域 (Scope)4限制多播组的地理或拓扑范围,指导路由器转发行为。
组 ID (Group ID)112标识特定多播组,在给定作用域内唯一。

作用域

路由器通过检查4 位的作用域 (Scope) 字段,可以立即确定数据包的最大转发边界。

Scope 值 (Hex)Scope 名称预期覆盖范围转发边界
1接口本地 (Interface-Local)仅限于单个接口仅主机,不可转发
2链路本地 (Link-Local)仅限于本地物理链路仅本地子网,不可路由
5站点本地 (Site-Local)局限于站点/园区边界内组织边界
8组织本地 (Organization-Local)局限于组织边界内跨越多个站点的组织边界
E全球作用域 (Global scope)全球互联网可达全球互联网

5. 地址配置协议

IPv6 主机的地址配置主要依赖两种机制:无状态地址自动配置(SLAAC)和动态主机配置协议版本 6(DHCPv6),并通过路由器播告(RA)消息中的 M 和 O 标志位进行协调管理。

无状态地址自动配置 (SLAAC)

SLAAC 是一种简化的、无须服务器状态跟踪的配置方法。主机通过路由器播告获取网络前缀,并利用本地生成的 64 位 IID 自动配置完整的全球单播地址。这种方法部署快速、简单,并且具有高弹性。然而,SLAAC 初始版本存在一个局限性,即它未能提供 DNS 服务器地址等附加配置选项。

DHCPv6

DHCPv6 协议用于动态地为客户端分配地址和配置信息。

  • 有状态 (Stateful): 在此模式下,DHCPv6 服务器负责地址的分配、租约的跟踪和管理,并解决地址冲突。这种方法为网络管理员提供了最高的控制权和可见性。
  • 无状态 (Stateless): 服务器不分配或跟踪 IPv6 地址,因为地址已经通过 SLAAC 机制生成。服务器仅用于提供附加配置信息,如 DNS 服务器地址或域名。

路由器播告 (RA) 标志位 M 和 O

路由器播告消息包含 M (Managed) 和 O (Other Configuration) 两个关键标志位,用于通知客户端应采用何种地址配置模式。

M 标志 (Managed)O 标志 (Other Config)配置模式地址分配方法配置信息
00纯 SLAACSLAAC无附加配置
01SLAAC + 无状态 DHCPv6SLAAC通过 DHCPv6 获取选项
10 或 1有状态 DHCPv6 (完全管理)DHCPv6 服务器分配DHCPv6 服务器分配

SLAAC 结合无状态 DHCPv6 (M=0, O=1) 的混合模式是 IPv6 架构中独有的弹性特征。它允许主机快速地通过 SLAAC 获得地址以确保网络连通性,随后再通过 DHCPv6 索取 DNS 等额外信息。这种设计降低了网络对 DHCPv6 服务器可用性的依赖,提高了系统的整体弹性。

有状态 DHCPv6 (M=1) 提供了精确的地址日志和审计能力。同时,DHCPv6 也支持更高级的功能,例如前缀委派 (Prefix Delegation),允许 ISP 或企业将 /56/64 的前缀委派给下游路由器或主机用于子网络划分。

最后修改:2025 年 09 月 29 日
如果觉得我的文章对你有用,请随意赞赏