Appearance
IPv6 详解
IPv6(Internet Protocol version 6)是下一代互联网协议,旨在解决 IPv4 地址枯竭问题。
目录
为什么需要 IPv6
IPv4 地址耗尽
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 总地址数 | 约 43 亿 | 约 340 涧(3.4×10^38) |
| 地球人均 | 约 0.5 个 | 约 4.8×10^28 个 |
IPv6 优势
- 海量地址空间 — 地球上的每一粒沙子都可以有唯一地址
- 简化的报头 — 更高效的路由
- 内置安全 — IPsec 强制支持
- 更好的移动性 — 优化的移动性支持
- 消除 NAT — 真正的端到端连接
IPv6 地址格式
IPv6 地址由 128 位组成,分为 8 组,每组 4 位十六进制数:
2001:0db8:85a3:0000:0000:8a2e:0370:7334完整格式
2001:0db8:85a3:0000:0000:8a2e:0370:7334
├───┬── ─── ─── ─── ─── ─── ─── ───
1 2 3 4 5 6 7 8
组冒分十六进制
每组 4 位十六进制数,组之间用冒号分隔:
| 组 | 十六进制 | 二进制 |
|---|---|---|
| 1 | 2001 | 0010000000000001 |
| 2 | 0db8 | 0000110110111000 |
| 3 | 85a3 | 1000010110100011 |
| 4 | 0000 | 0000000000000000 |
| 5 | 0000 | 0000000000000000 |
| 6 | 8a2e | 1000101000101110 |
| 7 | 0370 | 0000001101110000 |
| 8 | 7334 | 0111001100110100 |
IPv6 地址简化规则
规则一:前导零省略
每组的前导零可省略,但每组至少保留一位数字:
2001:0db8:0000:0000:0000:0000:0000:0001
↓
2001:db8:0:0:0:0:0:1规则二:双冒号压缩
连续的全零组可用 :: 替代,每个地址只能使用一次:
2001:db8:0:0:0:0:0:1
↓
2001:db8::1规则三:IPv4 内嵌型
IPv4 地址可嵌入 IPv6 地址后 32 位:
::ffff:192.168.1.1
::ffff:c0a8:0101 (相同,十六进制表示)简化示例
| 原始地址 | 简化后 |
|---|---|
| 2001:0db8:0000:0000:0000:0000:0000:0001 | 2001:db8::1 |
| fe80:0000:0000:0000:0000:0000:0000:0001 | fe80::1 |
| 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | 2001:db8:85a3::8a2e:370:7334 |
IPv6 地址类型
单播(Unicast)
一对一通信,发送到单个接口。
| 类型 | 前缀 | 说明 |
|---|---|---|
| 全球单播 | 2000::/3 | 互联网可路由的公有地址 |
| 链路本地 | fe80::/10 | 仅在同一链路/网段通信 |
| 唯一本地 | fc00::/7, fd00::/8 | 私有组织内部使用 |
| 环回 | ::1/128 | 本机回环地址 |
组播(Multicast)
一对多通信,发送到一组接口。
| 前缀 | 用途 |
|---|---|
| ff00::/8 | 所有组播地址 |
| ff02::1 | 所有节点(链路本地) |
| ff02::2 | 所有路由器(链路本地) |
| ff01::1 | 所有节点(本地) |
任播(Anycast)
一对最近,一个地址对应多个接口,路由到最近的一个。
多个服务器配置相同任播地址
↓
路由到最近的一个IPv6 地址类型速查
┌─────────────────────────────────────────────────────┐
│ IPv6 地址类型 │
├─────────────┬───────────────────────────────────────┤
│ 单播 │ 全球单播 (2000::/3) │
│ │ 链路本地 (fe80::/10) │
│ │ 唯一本地 (fc00::/7) │
│ │ 环回地址 (::1) │
├─────────────┼───────────────────────────────────────┤
│ 组播 (ff00::/8) │ ff02::1 所有节点 │
│ │ ff02::2 所有路由器 │
├─────────────┼───────────────────────────────────────┤
│ 任播 │ 从单播地址空间分配 │
└─────────────┴───────────────────────────────────────┘IPv6 特殊地址
| 地址 | 相当于 IPv4 | 用途 |
|---|---|---|
| ::1/128 | 127.0.0.1 | 本机回环地址 |
| ::/128 | 0.0.0.0 | 未指定地址 |
| ::ffff:0:0/96 | - | IPv4 映射地址 |
| 2001:db8::/32 | - | 文档示例地址 |
| fe80::/10 | 169.254.x.x | 链路本地地址 |
| fc00::/7 | 10.x.x.x | 唯一本地地址 |
文档示例地址
根据 RFC 3849,文档中应使用以下地址:
bash
2001:db8::/32 - 文档示例专用注意
这些地址不可在实际网络中使用!
IPv6 过渡技术
双协议栈(Dual Stack)
设备同时支持 IPv4 和 IPv6,根据目标地址自动选择:
┌─────────────────────────────────┐
│ 双协议栈主机 │
├───────────────┬─────────────────┤
│ IPv4 协议栈 │ IPv6 协议栈 │
└───────┬───────┴───────┬────────┘
│ │
↓ ↓
IPv4 网络 IPv6 网络隧道技术
将 IPv6 包封装在 IPv4 中传输:
| 技术 | 说明 |
|---|---|
| 6to4 | 自动隧道,2002::/16 |
| Teredo | NAT 后的 IPv6 连接 |
| ISATAP | 站点内自动隧道 |
| IPsec | 隧道模式可封装 IPv6 |
NAT64/DNS64
允许纯 IPv6 客户端访问 IPv4 服务器:
IPv6 客户端 → NAT64 网关 → IPv4 服务器
↓
DNS64 将 A 记录转换为 AAAAIPv6 配置与检测
检查系统 IPv6 支持
bash
# Linux/Mac
ip -6 addr show
ifconfig | grep inet6
# Windows
netsh interface ipv6 show address
# 检测连接
ping6 ipv6.google.com常见 IPv6 测试地址
| 地址 | 用途 |
|---|---|
| ipv6.google.com | Google IPv6 测试 |
| test-ipv6.com | IPv6 连通性测试 |
| 2001:db8::1 | 文档示例 |
| ff02::1 | 本地所有节点 |
中国 IPv6 发展
根据 CNNIC 报告,中国 IPv6 部署率约 10-15%,主要集中在运营商骨干网络。家用路由器和终端设备支持仍在推广中。