IPv6 地址架构核心解析
概述
本文档定义了 IPv6(互联网协议第 6 版)的编址架构,涵盖了从地址模型、文本表示到各类地址类型(单播、任播、多播)的详细规范。它替代了早期的 RFC 3513,是当前理解 IPv6 寻址的基础标准。
文档状态
本备忘录为互联网社区指定了一种互联网标准轨道协议,并征求有关改进的讨论和建议。分发不受限制。
摘要
规范内容包括 IPv6 编址模型、地址的文本表示、单播/任播/多播地址定义,以及节点必备地址要求。重点在于明确 IPv6 地址如何标识接口而非节点,以及不同作用域下的地址行为。
IPv6 编址模型
IPv6 地址是用于标识接口及接口集合的 128 位标识符。与 IPv4 不同,IPv6 中不存在广播地址,其功能已被多播地址取代。地址主要分为三种类型:
- 单播 (Unicast):标识单个接口。发往该地址的数据包将被交付至该接口。
- 任播 (Anycast):标识一组接口(通常属于不同节点)。数据包被路由至'最近'的一个接口。
- 多播 (Multicast):标识一组接口。数据包被交付至该组所有接口。
在 IPv6 中,除非特别排除,任何字段的合法值均可为全零或全一。前缀可包含以零值字段结尾的情况。
地址文本表示
IPv6 地址在文本字符串表示时有三种常规形式,书写时需遵循以下规则:
-
首选格式:
x:x:x:x:x:x:x:x,其中每个x为 1~4 位十六进制数字。例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789注意:单个字段中的前导零无需书写,但每个字段至少保留一位数字。
-
零压缩语法:用
::表示一个或多个连续的 16 位零组。每个地址中::只能出现一次。原始地址 压缩后地址 2001:DB8:0:0:8:800:200C:417A2001:DB8::8:800:200C:417A0:0:0:0:0:0:0:1::10:0:0:0:0:0:0:0:: -
IPv4 - 兼容混合格式:在混合环境中可用
x:x:x:x:x:x:d.d.d.d格式。例如:::13.1.68.3
地址前缀表示
IPv6 地址前缀采用类似 CIDR 的记法:ipv6-address/prefix-length。例如:
2001:0DB8:0:CD30:123:4567:89AB:CDEF/60
这里 /60 表示左侧连续 60 位构成前缀。需注意压缩后的段必须保持 16 位对齐,避免歧义。
地址类型标识符
IPv6 地址的类型通过高位比特标识:
| 地址类型 | 二进制前缀 | IPv6 表示法 |
|---|---|---|
| 未指定地址 | 全 0 | ::/128 |
| 回环地址 | 00…1 | ::1/128 |
| 多播地址 | 11111111 | FF00::/8 |
| 链路本地单播 | 1111111010 | FE80::/10 |
| 全球单播地址 | 其他 | - |
任播地址取自单播地址空间,语法上与单播无区别,需显式配置告知节点其为任播。
单播地址详解
IPv6 单播地址支持任意比特长度的前缀聚合。主要类型包括全局单播、链路本地等。
接口标识符
单播地址中的接口标识符用于标识链路上的接口,要求在子网前缀内唯一。除二进制值以 000 开头的单播地址外,接口标识符通常为 64 位长,采用修改的 EUI-64 格式构造。
基于修改的 EUI-64 格式的标识符,若派生自 IEEE MAC 地址则具有全局范围;若缺乏全局令牌(如串行链路),则为本地范围。设计时翻转了'u'位(全局/本地位),便于管理员手动配置非全局标识符。
特殊单播地址
- 未指定地址 (
::):绝不可分配给节点,仅用于初始化主机获取自身地址前的源地址。路由器不得转发源地址为此的地址。 - 回环地址 (
::1):用于向自身发送数据包,不可分配给物理接口,不可发送到节点外部。 - 全局单播地址:用于全球范围内唯一标识设备,格式为
全球路由前缀 + 子网 ID + 接口 ID。 - 嵌入 IPv4 地址:包含 IPv4 兼容和 IPv4 映射两种,前者已弃用,后者用于过渡。
- 链路本地地址 (
FE80::/10):仅用于单一链路,路由器禁止转发此类数据包到其他链路。 - 站点本地地址:原设计用于站点内部,现已按规范弃用,新实现应将其视为全球单播地址。
任播地址
任播地址分配给多个接口,数据包被路由至'最近'的一个。典型用途是标识提供互联网服务的组织所属的路由器集合。由于扩展性限制,全局任播集合的支持可能受到严格限制。
子网路由器任播地址是预定义的必备任播地址,格式为 子网前缀 + 全 0 接口 ID。发往该地址的数据包将被交付至子网中的某一台路由器。
多播地址
IPv6 多播地址是一组接口的标识符,格式如下:
| 8 位 | 4 位 | 4 位 | 112 位 |
|---|---|---|---|
| 11111111 | flgs | scop | group ID |
- flgs:标志位,T=0 为永久分配,T=1 为临时分配。
- scop:作用域值,如接口本地 (1)、链路本地 (2)、站点本地 (5)、全局 (E) 等。
- group ID:在多播组内标识具体组。
使用规则:
- 禁止作为源地址。
- 路由器不得将多播数据包转发至超过目的地址 scop 指定的作用域。
- 节点应避免向保留值(如 scop=F)发送数据包。
预定义地址:
- 所有节点:
FF02::1(链路本地) - 所有路由器:
FF02::2(链路本地) - 被请求节点地址:由单播地址低 24 位生成,用于邻居发现,例如
FF02::1:FFXX:XXXX。
节点的必备地址
主机必须识别:
- 每个接口的链路本地地址。
- 回环地址 (
::1)。 - 所有节点多播地址(如
FF02::1)。 - 每个单播地址对应的被请求节点多播地址。
路由器额外需求:
- 所有配置为路由器接口的子网路由器任播地址。
- 所有路由器多播地址(如
FF02::2)。
安全考虑
IPv6 寻址相关文档对互联网基础设施安全没有直接影响。数据包的认证机制在独立的标准中定义。
IANA 注意事项
IANA 已将 0000::/96 标记为 "IETF 保留",此前定义为 "IPv4 兼容 IPv6 地址" 的前缀,该定义已被弃用。该地址块不得重新分配作其他用途。


