跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

IPv6 地址架构详解:RFC 4291 核心规范解读

IPv6 地址架构定义了 128 位标识符的分配模型、文本表示及单播、任播、多播等类型。文档明确了链路本地地址为必备地址,全球单播地址采用分层结构,并弃用了站点本地地址和 IPv4 兼容地址。理解这些规则对于构建可扩展的 IPv6 网络至关重要。

利刃发布于 2026/3/23更新于 2026/7/948 浏览
IPv6 地址架构详解:RFC 4291 核心规范解读

IPv6 地址架构详解

本规范定义了 IPv6(互联网协议第 6 版)的编址架构。文档内容包括 IPv6 编址模型、地址文本表示、单播/任播/多播地址定义,以及节点必备地址要求。本文档替代了 RFC 3513《IPv6 编址架构》。

1. 概述

本文档为互联网社区指定了一种互联网标准轨道协议,分发不受限制。有关本协议的标准化状态和状况,请参考当前版本的《互联网官方协议标准》(STD 1)。

2. IPv6 编址

IPv6 地址是用于标识接口及接口集合的 128 位标识符。地址分为三种类型:

  • 单播(Unicast):标识单个接口。发往单播地址的数据包将被交付至该地址标识的接口。
  • 任播(Anycast):标识一组接口(通常属于不同节点)。发往任播地址的数据包将被交付至该地址标识的其中一个接口(根据路由协议的距离度量,选择'最近'的接口)。
  • 多播(Multicast):标识一组接口(通常属于不同节点)。发往多播地址的数据包将被交付至该地址标识的所有接口。

IPv6 中不存在广播地址,其功能已被多播地址取代。

在 IPv6 中,除非特别排除,任何字段的合法值均可为全零或全一。具体而言,前缀可包含以零值字段结尾的情况。

2.1 地址模型

所有类型的 IPv6 地址均分配给接口,而非节点。IPv6 单播地址标识单个接口,由于每个接口属于唯一节点,该节点任意接口的单播地址均可作为节点标识符。

所有接口必须至少拥有一个链路本地单播地址(其他必备地址见 2.8 节)。单个接口可同时拥有多个任意类型(单播、任播、多播)或作用域的 IPv6 地址。对于不用于与非邻居节点收发 IPv6 数据包的接口,无需配置作用域大于链路范围的单播地址 —— 这对点到点接口尤为便利。

当前 IPv6 沿用 IPv4 模型,即子网前缀与一条链路关联,同一链路可分配多个子网前缀。即使接口仅用于本地通信,也必须配置链路本地地址(如 FE80::/10 前缀地址),以确保链路层通信的基础可达性。

2.2 地址的文本表示

IPv6 地址以文本字符串表示时存在三种常规形式:

首选格式: 格式为 x:x:x:x:x:x:x:x,其中每个 x 为地址中 8 个 16 位段的 1~4 位十六进制数字。 示例:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:0:8:800:200C:417A

注意:单个字段中的前导零无需书写,但每个字段至少保留一位数字。

零压缩语法: 由于部分 IPv6 地址分配方式会产生长串零位,为简化书写,可用特殊语法压缩连续零段:

  • 用 表示一个或多个 16 位零组,且每个地址中 只能出现一次。
::
::
原始地址压缩后地址类型说明
2001:DB8:0:0:8:800:200C:417A2001:DB8::8:800:200C:417A单播地址
FF01:0:0:0:0:0:0:101FF01::101多播地址
0:0:0:0:0:0:0:1::1回环地址
0:0:0:0:0:0:0:0::未指定地址

IPv4 - 兼容混合格式: 在 IPv4/IPv6 混合环境中,可用 x:x:x:x:x:x:d.d.d.d 格式。前 6 个 x 为地址高 6 个 16 位段的十六进制值,后 4 个 d 为低 4 个 8 位段的十进制值。 示例:

::13.1.68.3
::FFFF:129.144.52.38

2.3 地址前缀的文本表示

IPv6 地址前缀的文本表示方式类似于无类别域间路由(CIDR)记法中 IPv4 地址前缀的写法。格式为:

ipv6-address/prefix-length 

其中 prefix-length 是一个十进制数值,表示地址中左侧连续多少位构成前缀。

合法与非法表示示例:

前缀描述合法表示示例非法表示示例
60 位前缀 20010DB80000CD32001:0DB8:0000:CD30:0:0:0:0/60
2001:0DB8::CD30:0:0:0:0/60
2001:0DB8:0:CD30::/60
2001:0DB8:0:CD3/60
2001:0DB8::CD30/60
2001:0DB8::CD3/60

错误原因:

  1. 压缩后的段必须保持 16 位对齐。
  2. :: 扩展后前缀长度不足 60 位。
  3. 压缩导致非末尾段的零被移除。

当同时表示节点地址及其子网前缀时,可采用以下简化方式:

2001:0DB8:0:CD30:123:4567:89AB:CDEF/60 

2.4 地址类型标识符

IPv6 地址的类型通过地址的高位比特进行标识:

地址类型二进制前缀IPv6 表示法章节
未指定地址全 0(128 位)::/1282.5.2
回环地址00…1(128 位)::1/1282.5.3
多播地址11111111FF00::/82.7
链路本地单播地址1111111010FE80::/102.5.6
全球单播地址(其他所有情况)--

任播地址取自单播地址空间,且在语法上与单播地址无区别。

2.5 单播地址

IPv6 单播地址可使用任意比特长度的前缀进行聚合。IPv6 中存在多种单播地址类型,特别是全球单播地址、站点本地单播地址(已弃用) 和链路本地单播地址。

除上述关于子网边界的认知外,节点不应对 IPv6 地址的结构做任何假设。

2.5.1 接口标识符

IPv6 单播地址中的接口标识符用于标识链路上的接口,要求在子网前缀内唯一。建议同一链路上不同节点不分配相同的接口标识符。

除二进制值以 000 开头的单播地址外,所有单播地址的接口标识符必须为 64 位长,并采用修改的 EUI-64 格式构造。

从 IEEE EUI-64 标识符构造接口标识符时,需翻转 'u' 位(IEEE EUI-64 术语中的全局 / 本地位)。在修改的 EUI-64 格式中:

  • 'u' 位设为 1 表示全局范围;
  • 设为 0 表示本地范围。

翻转 'u' 位的设计初衷是便于系统管理员在缺乏硬件令牌时手动配置非全局标识符。若不翻转该位,标识符可能需表示为 0200:0:0:1 等形式,而翻转后可简化为 0:0:0:1 等。

2.5.2 未指定地址

地址 0:0:0:0:0:0:0:0 称为未指定地址,绝不可分配给任何节点。它表示地址缺失,典型用途如初始化主机在获取自身地址前发送的 IPv6 数据包的源地址字段。

未指定地址不得作为 IPv6 数据包的目的地址或出现在 IPv6 路由报头中。源地址为未指定地址的 IPv6 数据包,IPv6 路由器必须不进行转发。

2.5.3 回环地址

单播地址 0:0:0:0:0:0:0:1 称为回环地址,节点可用其向自身发送 IPv6 数据包,但绝不可分配给任何物理接口。

回环地址不得作为节点外发 IPv6 数据包的源地址。目的地址为回环地址的 IPv6 数据包,绝不可发送到节点外部,且 IPv6 路由器必须不进行转发。

2.5.4 全局单播地址

IPv6 全球单播地址用于在全球范围内唯一标识网络中的设备,其一般格式如下:

n 位m 位128 - n - m 位
全球路由前缀子网 ID接口 ID

除了以二进制 000 开头的地址外,所有全球单播地址都有一个 64 位的接口 ID 字段(即 n + m = 64)。

2.5.5 嵌入 IPv4 地址的 IPv6 地址

定义了两种在地址低 32 位携带 IPv4 地址的 IPv6 地址类型:

  1. IPv4 兼容的 IPv6 地址:现已弃用,因当前 IPv6 过渡机制不再使用,新实现无需支持。
  2. IPv4 映射的 IPv6 地址:用于将 IPv4 节点地址表示为 IPv6 地址。
2.5.6 链路本地 IPv6 单播地址

链路本地地址仅用于单一链路,格式如下:

10 位54 位64 位
11111110100接口标识符

用途:单一链路内的自动地址配置、邻居发现,或无路由器场景。路由器禁止转发源或目的地址为链路本地地址的数据包到其他链路。

2.5.7 站点本地 IPv6 单播地址

该地址原设计用于站点内部寻址,现已按 [SLDEP] 弃用。新实现不再支持该前缀特殊行为(需将其视为全球单播地址)。

2.6 任播地址

IPv6 任播地址是分配给多个接口(通常属于不同节点)的地址,其特性是:根据路由协议的距离度量,发往任播地址的数据包将被路由至拥有该地址的'最近'接口。

任播地址从单播地址空间中分配,因此,任播地址在语法上与单播地址无法区分。

需注意,在最坏情况下,任播地址集合的前缀 P 可能是空前缀。此时,任播地址必须在整个互联网中作为独立路由条目维护,这将对支持此类'全局'任播集合的数量构成严重的扩展性限制。

2.6.1 必备任播地址

子网路由器任播地址已预先定义,其格式如下:

n 位128-n 位
子网前缀00000000000000(全 0)

该地址旨在用于节点需要与路由器集合中任意一台通信的场景。

2.7 多播地址

IPv6 多播地址是一组接口(通常位于不同节点)的标识符。一个接口可属于任意数量的多播组。多播地址的格式如下:

8 位4 位4 位112 位
11111111flgsscopgroup ID

flgs(4 位标志位):

  • T=0:表示永久分配的'知名'多播地址。
  • T=1:表示非永久分配的'临时'或动态分配的多播地址。

scop(4 位多播作用域值):

  • 1:接口本地作用域
  • 2:链路本地作用域
  • 5:站点本地作用域
  • 8:组织本地作用域
  • E:全局作用域

多播地址使用规则:

  1. 禁止作为源地址:多播地址不得作为 IPv6 数据包的源地址。
  2. 作用域转发限制:路由器不得将多播数据包转发至超过目的地址 scop 字段指定的作用域。

2.7.1 预定义多播地址

以下为预定义的知名多播地址:

  • 所有节点地址:FF02::1(链路本地)
  • 所有路由器地址:FF02::2(链路本地)
  • 被请求节点地址:格式 FF02::1:FFXX:XXXX,由节点的单播/任播地址计算得到。

2.8 节点的必备地址

主机必须识别以下标识自身的地址:

  • 每个接口的链路本地地址。
  • 回环地址(::1)。
  • 2.7.1 节定义的所有节点多播地址。
  • 每个单播/任播地址对应的被请求节点多播地址。

路由器必备地址,路由器除需识别主机的所有必备地址外,还需额外识别:

  • 所有配置为路由器接口的子网路由器任播地址。
  • 2.7.1 节定义的所有路由器多播地址。
地址类型主机需求路由器额外需求
链路本地地址每个接口必须配置同上
任播地址可选(若配置)必须支持子网路由器任播地址
多播地址加入所有节点组和被请求节点组额外加入所有路由器组
回环地址必须识别同上

实际部署中,主机启动时自动生成链路本地地址(如 FE80::/10),并加入 FF02::1 多播组以接收链路内广播消息。路由器在接口配置子网前缀后,自动生成任播地址响应发往该地址的数据包。

3. 安全考虑

IPv6 寻址相关文档对互联网基础设施安全没有直接影响。IPv6 数据包的认证机制在 [AUTH] 中定义。

4. IANA 注意事项

IPv4 兼容的 IPv6 地址,已被本文档弃用。IANA 应继续将包含这些地址的地址块标记为'IETF 保留',且不得重新分配作其他用途。例如:

  • 0000::/8:IETF 保留。

IANA 为该地址块添加了注释:0000::/96 此前被定义为'IPv4 兼容 IPv6 地址'前缀,该定义已被 RFC 4291 弃用。

目录

  1. IPv6 地址架构详解
  2. 1. 概述
  3. 2. IPv6 编址
  4. 2.1 地址模型
  5. 2.2 地址的文本表示
  6. 2.3 地址前缀的文本表示
  7. 2.4 地址类型标识符
  8. 2.5 单播地址
  9. 2.5.1 接口标识符
  10. 2.5.2 未指定地址
  11. 2.5.3 回环地址
  12. 2.5.4 全局单播地址
  13. 2.5.5 嵌入 IPv4 地址的 IPv6 地址
  14. 2.5.6 链路本地 IPv6 单播地址
  15. 2.5.7 站点本地 IPv6 单播地址
  16. 2.6 任播地址
  17. 2.6.1 必备任播地址
  18. 2.7 多播地址
  19. 2.7.1 预定义多播地址
  20. 2.8 节点的必备地址
  21. 3. 安全考虑
  22. 4. IANA 注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 2021 年信奥赛 C++ 提高组 CSP-S 初赛真题解析:阅读程序第 2 题
  • 白帽子漏洞挖掘实战经验:资产收集与常见漏洞利用
  • AI 辅助贪吃蛇游戏开发:DeepSeek 实践
  • 大语言模型:基础架构与前沿技术演进
  • Vue 异步组件与动态加载:defineAsyncComponent、import.meta.glob 与 Suspense 实战
  • JavaScript 集合 (Set、WeakSet) 与映射 (Map、WeakMap)
  • OpenClaw 龙虾 AI 全能助手安装配置指南
  • Gitee 仓库创建与 Git 协作实战指南
  • 车载AVM开发实战:图像滤波与畸变矫正的C++实现
  • 开源 AI 绘画趋势:Z-Image-Turbo 轻量化部署指南
  • 基于 xxxwww 的电商爬虫系统实战与优化
  • PicoClaw 轻量级 AI 助手安装与使用指南
  • Flutter 应用架构演进:从 v1.0 基础骨架到 v2.0 Riverpod 实战
  • Java 异常处理:从原理到实战最佳实践
  • 前端预览 DOC 文件的两种方案及注意事项
  • Seedance 2.0 使用指南:免费渠道对比与高效创作方案
  • Face Analysis WebUI 体验报告:106 点关键点检测实测
  • Dev-C++ 下载、安装与使用入门指南
  • Flutter pathfinding 库在 OpenHarmony 上的适配与实战
  • RPC 原理与 BRPC 实战:基于 C++ 的分布式通信实现

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online