IPv6 与过渡技术
基于 HTTP 现代标准 · 核于 2026-06
速查
- 诞生动机:IPv4 只有 32 位 ≈ 43 亿个地址,1983 年投用,早已耗尽(IANA 顶级地址池 2011 年分完,各区域注册局陆续告罄)。IPv6 是治本方案。
- 地址规模:IPv6 用 128 位,即 2¹²⁸ ≈ 3.4×10³⁸(约 340 涧)个地址——地球每粒沙子都能分到天文数量级的地址。
- 书写格式:8 组、每组 16 位(4 个十六进制数),冒号
:分隔,如2001:0db8:0000:0000:0000:ff00:0042:8329。 - 零压缩两条规则:① 每组前导零可省(
0042→42);② 连续的全零组用::折叠,全址只能用一次(否则无法还原)。 - 前缀
/64:IPv6 子网标准固定为/64——前 64 位是网络前缀,后 64 位是接口标识(IID)。 - 核心优势:海量地址 → 端到端直连、无需 NAT;SLAAC 无状态自动配置;固定 40 字节首部、取消首部校验和、路由器不再分片,转发更快;可选 IPsec。
- 地址类型:全局单播(公网可路由)、链路本地
fe80::/10(本网段自动生成,必有)、唯一本地fc00::/7(内网,类比私有地址)、组播ff00::/8。 - 没有广播:IPv6 废弃广播,全部用组播替代(如「所有节点」
ff02::1),更省资源。 - 三大过渡技术:双栈(同时跑 IPv4/IPv6,最平滑)、隧道(6in4 把 IPv6 包封进 IPv4,用协议号 41)、翻译(NAT64 + DNS64 让纯 IPv6 客户端访问纯 IPv4 服务)。
- 部署现状:截至 2026-06,约 50% 的用户通过原生 IPv6 访问 Google,印度 / 法国 / 德国超 70%;可用 caniuse / Google IPv6 统计实时查询。
- 规范状态:核心规范 RFC 8200(2017)已是互联网标准 STD 86,取代旧版 RFC 2460。
一、为什么需要 IPv6:IPv4 地址耗尽
IPv4 地址是 32 位,理论上限约 43 亿(2³²)。这个数字在 1983 年协议投用时看似充裕,但随着设备爆炸式增长(PC → 手机 → IoT),地址很快不够分。
IPv4 早已分完
IANA 的顶级 IPv4 地址池在 2011 年即告分配完毕,此后各区域互联网注册局(RIR)也相继耗尽可分配段。我们今天还能上网,靠的是 NAT(多设备共用一个公网地址)等「续命」手段——但 NAT 破坏了端到端连通性,治标不治本(NAT 细节见NAT 与 DHCP)。
IPv6 把地址长度从 32 位直接拉到 128 位,地址空间从 2³² 暴增到 2¹²⁸ ≈ 3.4×10³⁸。这不是「翻几倍」,而是多了约 7.9×10²⁸ 倍——足够给地球上每一粒沙子都分配海量地址。地址耗尽问题被从根上解决。
二、IPv6 地址表示与零压缩
一个完整的 IPv6 地址由 8 组组成,每组 16 位(写成 4 个十六进制数),组间用冒号 : 分隔:
2001:0db8:0000:0000:0000:ff00:0042:8329
└──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘
16位 16位 ... 共 128 位128 位写全又长又难记,于是有两条零压缩规则,可层层简化:
| 步骤 | 规则 | 示例 |
|---|---|---|
| 原始 | 完整 8 组 | 2001:0db8:0000:0000:0000:ff00:0042:8329 |
| 规则① | 每组省略前导零 | 2001:db8:0:0:0:ff00:42:8329 |
| 规则② | 连续全零组用 :: 折叠 | 2001:db8::ff00:42:8329 |
:: 全址只能用一次
:: 代表「一段连续的全零组」,但整个地址里只允许出现一次。如果出现两次(如 2001::25de::cade),解析器就无法判断每个 :: 各代表几组零,地址无法唯一还原——这是初学者最常见的错误。
几个特殊地址记一下
- 未指定地址
::(全零,等价 IPv4 的0.0.0.0) - 回环地址
::1(等价 IPv4 的127.0.0.1,即 localhost) - URL 中带端口:IPv6 地址含冒号,写进 URL 时必须用方括号包裹,如
http://[2001:db8::1]:8080/
前缀 /64:网络与接口的分界
IPv6 用 CIDR 前缀表示网络部分(与 IPv4 一致,CIDR 见上一页)。与 IPv4 子网大小灵活不同,IPv6 的单个子网标准固定为 /64:
2001:db8:abcd:0012 : 0000:0000:0000:0001 / 64
└────── 前缀(64 位)──────┘ └─── 接口标识 IID(64 位)───┘前 64 位标识网络(由 ISP / 路由器下发),后 64 位是接口标识,可由设备依据网卡 MAC(EUI-64)或随机方式自动生成——这正是下文 SLAAC 的基础。
三、IPv6 的核心优势
IPv6 不只是「地址更多」,它借重新设计修掉了 IPv4 的多个历史包袱:
| 维度 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位(≈43 亿) | 128 位(≈3.4×10³⁸) |
| 地址表示 | 点分十进制 192.168.1.1 | 冒号十六进制 2001:db8::1 |
| 首部长度 | 可变 20~60 字节,14 个字段 | 固定 40 字节,字段更精简 |
| 首部校验和 | 有(每跳重算,耗时) | 取消(交给链路层 / 传输层) |
| 分片 | 路由器可沿途分片 | 仅源主机分片,路由器不分片 |
| 地址配置 | 多靠 DHCP / 手动 | SLAAC 无状态自动配置 |
| NAT | 普遍依赖(地址不够) | 端到端直连,原则上无需 NAT |
| 广播 | 有 | 无(改用组播) |
| IPsec | 可选附加 | 设计内建(现为推荐项) |
下面挑几条对前端 / 运维最有感的展开:
- 端到端无需 NAT:地址海量,每台设备都能拿到全局可路由地址,通信双方可直连,无需 NAT 转换。这简化了 P2P、回调、实时通信等场景的网络模型。
- SLAAC 无状态自动配置:设备接入网络后,先自动生成链路本地地址,再监听路由器发来的**路由通告(RA)**获取网络前缀,自己拼出全局地址——无需 DHCP 服务器即可上网(与有状态的 DHCPv6 互补,见NAT 与 DHCP)。
- 简化的固定首部:IPv6 首部定长 40 字节,并取消了首部校验和字段;同时规定路由器不再分片(分片只由源主机完成)。两者都减少了路由器的逐包处理开销,转发更高效。
- 内置 IPsec:IPv6 设计之初将 IPsec 列为体系一部分,提供加密与认证能力(注:后续标准已将「强制实现」降级为推荐,并非每个实现都默认启用)。
首部校验和为何能去掉
IPv4 首部校验和需要每经过一跳就重算一次(因 TTL 等字段在变),是路由器的一项固定开销。IPv6 认为链路层(如以太网 FCS)和传输层(TCP/UDP 校验和)已能保证完整性,故整层去掉,把算力还给转发——这是「简化首部」最典型的体现。
四、IPv6 地址类型
IPv6 用地址前缀区分作用范围,前端调试时最常打交道的是前两类:
| 类型 | 前缀 | 作用范围 | 类比 / 说明 |
|---|---|---|---|
| 全局单播 | 2000::/3(常见 2001:) | 全球 | 公网可路由,类比 IPv4 公网地址 |
| 链路本地 | fe80::/10 | 仅本链路 | 每个接口必有,自动生成,不跨路由器 |
| 唯一本地(ULA) | fc00::/7 | 组织内部 | 类比 IPv4 私有地址(10.x / 192.168.x) |
| 组播 | ff00::/8 | 一组接口 | 一对多,替代广播 |
链路本地地址你天天见
执行 ifconfig / ip addr 时那个 fe80:: 开头的地址就是链路本地地址——它在接口启用时自动生成、必然存在,用于同一网段内的邻居发现(NDP)、路由通告等底层通信,但不能跨路由器,因此不会出现在公网。
IPv6 没有广播,全用组播
IPv4 的广播(向网段内所有主机发包)在 IPv6 中被彻底废弃。需要「一对多」时一律用组播:发往特定的组播组地址,只有加入该组的接口才会收到。例如 ff02::1 是「本链路所有节点」、ff02::2 是「本链路所有路由器」。这避免了广播打扰无关主机,更高效。
五、过渡技术:IPv4 与 IPv6 如何共存
IPv4 与 IPv6 不能直接互通(首部格式、地址长度都不同),而全球切换无法一夜完成,于是有三类过渡技术让两者长期共存:
①双栈 dual-stack ②隧道 tunneling ③翻译 translation
设备同时跑 v4 + v6 v6 包封进 v4 包穿越 v6 客户端 ↔ v4 服务
┌──────────┐ ┌────────────────────┐ ┌─────┐ NAT64 ┌─────┐
│ IPv4 IPv6│ │[IPv4[ IPv6 payload ]]│ │ v6 │ ──────▶ │ v4 │
└──────────┘ └────────────────────┘ └─────┘ DNS64 └─────┘
各走各的,最平滑 跨越只支持 v4 的中间网络 让纯 v6 网访问纯 v4 资源- 双栈(Dual-Stack):主机 / 路由器同时启用 IPv4 和 IPv6 两套协议栈,对端是谁就用对应协议。这是最平滑、最推荐的过渡方式,缺点是要同时维护两套地址与配置。
- 隧道(Tunneling):当两个 IPv6 节点之间隔着只支持 IPv4 的网络时,把 IPv6 报文封装进 IPv4 报文穿越过去,到对端再解封。典型如 6in4(用 IPv4 协议号 41 承载),以及自动隧道 6to4、可穿越 NAT 的 Teredo 等。
- 翻译(NAT64 + DNS64):让纯 IPv6 客户端访问纯 IPv4 服务。NAT64 在 IPv6 与 IPv4 间做地址 / 协议转换(常用知名前缀
64:ff9b::/96嵌入 IPv4 地址);DNS64 则在客户端只查到 A 记录、没有 AAAA 记录时,合成一条 AAAA 记录指向 NAT64,使纯 IPv6 端「以为」对方支持 IPv6。两者配合是当下移动网络纯 IPv6 化的主流方案(还有 464XLAT 等组合)。
选哪种?看你卡在哪一步
两端都能升级 → 双栈最省心;中间网络还是 IPv4 → 隧道打通;一端是回不去的纯 IPv4 老服务 → NAT64/DNS64 翻译。三者常叠加使用,共同支撑长达数十年的渐进迁移。
六、IPv6 部署现状
IPv6 标准早已成熟(RFC 8200 是互联网标准 STD 86),但部署是渐进的:
- 全球占比:据 Google 官方 IPv6 统计,截至 2026-06,约 50% 的用户已通过原生 IPv6 访问其服务;印度、法国、德国等已超 70%。
- 区域不均:移动网络(运营商纯 IPv6 + NAT64)推进最快;部分地区与老旧企业网仍以 IPv4 为主。
- 前端如何确认:用 caniuse、Google IPv6 采用率页面查全球进度;本机可访问
test-ipv6.com检测自己是否已具备 IPv6 连通性。
前端要不要操心 IPv6
绝大多数场景不用——浏览器、DNS(AAAA 记录见DNS 记录类型)、HTTP 栈都已透明支持 IPv6,应用层代码无感。但有两点要留神:① 在 URL / 配置里手写 IPv6 字面量务必用方括号 [...] 包裹再加端口;② 服务端 / 日志里拿到的客户端 IP 可能是 IPv6 格式,做 IP 解析 / 白名单时别只按 IPv4 的点分十进制来判断。
小结
本页从 IPv4 地址耗尽这一根本矛盾切入,讲清了 IPv6 的设计与落地:
- 动机:IPv4 仅 32 位 ≈ 43 亿地址,2011 年起陆续耗尽;IPv6 用 **128 位(2¹²⁸≈3.4×10³⁸)**从根上解决。
- 表示:8 组 16 位、冒号分隔;零压缩两规则——省前导零 +
::折叠连续零组(仅一次);子网标准前缀/64。 - 优势:海量地址带来端到端无 NAT;SLAAC 自动配置;固定 40 字节首部 + 取消校验和 + 路由器不分片让转发更快;可选 IPsec。
- 地址类型:全局单播、链路本地
fe80::、唯一本地、组播ff00::;废弃广播、改用组播。 - 过渡:双栈(最平滑)、隧道(6in4 等穿越 IPv4 网)、NAT64/DNS64(纯 IPv6 访问纯 IPv4)三管齐下;全球原生 IPv6 占比已约半数。
理解了 IPv6 的地址结构与过渡机制,我们就能进一步讨论数据包如何在这些地址之间被选路转发——这正是下一页路由原理与路由器/网关的主题。
上一页:子网掩码与 CIDR 划分 | 下一页:路由原理与路由器/网关