为什么会有 IPv6
IPv6(RFC 8200)设计于 20 世纪 90 年代,当时人们已经清楚 IPv4 的 43 亿个地址终将耗尽。IPv6 地址有 128 位:2¹²⁸,约 3.4 × 10³⁸ 个地址。关键不在于数字有多大,而在于每个网络都能获得所需的地址空间,每台设备都能重新拥有全球可达的地址——无需 NAT。
IPv6 并不是 IPv4 的升级版;两种协议并行运行(双栈)。如今,访问大型服务的流量中有很大且不断增长的比例使用 IPv6,移动网络尤其如此。
记法:十六进制分组
IPv6 地址写成八组、每组四个十六进制数字,用冒号分隔:
2001:0db8:0000:0000:0000:ff00:0042:8329
每组 16 位。十六进制数字包括 0–9 和 a–f;不区分大小写,但习惯上用小写。
压缩规则
长串的零很常见,因此有两条缩写规则(RFC 4291),而 RFC 5952 规定了唯一正确的使用方式:
- 去掉每组的前导零:
0db8→db8,0042→42,0000→0。 - 把一段连续的全零组替换为
::——取最长的一段,长度相同时取第一段,且至少要覆盖两组。::只能出现一次,否则地址会产生歧义。
于是 2001:0db8:0000:0000:0000:ff00:0042:8329 变成 2001:db8::ff00:42:8329。环回地址 0:0:0:0:0:0:0:1 写作 ::1,未指定地址则就是 ::。
在下方的浏览器中试试任意地址——它会并排显示完整形式和规范形式。
完整形式
压缩形式
2001:db8::ff00:42:8329
范围: 特殊用途 · Documentation (2001:db8::/32)
前缀与 /64
IPv6 与 IPv4 一样使用 CIDR 记法。一个典型的全局单播地址分为:
- 路由前缀(通常为 /48 或 /56)——由运营商分配给站点。
- 子网 ID——直到 /64 的各位,用于给站点内的网络编号。一个 /48 可容纳 65,536 个子网。
- 接口标识符(最后 64 位)——标识设备在其网络中的身份。
单个局域网几乎总是 /64。无状态地址自动配置(SLAAC)依赖于此:设备自行选择接口标识符,如今出于隐私考虑会随机生成(RFC 8981),并定期更换。
你会遇到的地址类型
- 全局单播
2000::/3——公网可路由地址。 - 链路本地
fe80::/10——每个 IPv6 接口都有一个,仅在本地链路上有效,用于邻居发现和路由协议。 - 唯一本地
fc00::/7(实际使用fd00::/8)——相当于 IPv6 的私有地址(RFC 4193)。 - 组播
ff00::/8——IPv6 没有广播,由组播组取而代之。 - 环回
::1与未指定::。 - IPv4 映射
::ffff:0:0/96——IPv6 软件表示 IPv4 对端的方式,例如::ffff:192.0.2.1。 - 文档用途
2001:db8::/32和3fff::/20——用于本页这样的示例。
特殊用途 IPv6 地址块
以下是保留 IPv6 地址块的完整列表,由本站分类器所使用的 IANA 注册表生成:
| 地址块 | 用途 | 参考 | 全球可达 |
|---|---|---|---|
| ::/128 | Unspecified Address | RFC 4291 | 否 |
| ::1/128 | Loopback Address | RFC 4291 | 否 |
| ::ffff:0:0/96 | IPv4-mapped Address | RFC 4291 | 否 |
| 64:ff9b::/96 | IPv4-IPv6 Translation (NAT64) | RFC 6052 | 是 |
| 64:ff9b:1::/48 | Local-use IPv4/IPv6 Translation | RFC 8215 | 否 |
| 100::/64 | Discard-Only Address Block | RFC 6666 | 否 |
| 2001::/32 | TEREDO | RFC 4380 | 否 |
| 2001:2::/48 | Benchmarking | RFC 5180 | 否 |
| 2001:db8::/32 | Documentation | RFC 3849 | 否 |
| 2001:10::/28 | Deprecated (ORCHID) | RFC 4843 | 否 |
| 2001:20::/28 | ORCHIDv2 | RFC 7343 | 是 |
| 2002::/16 | 6to4 | RFC 3056 | 否 |
| 3fff::/20 | Documentation | RFC 9637 | 否 |
| 5f00::/16 | Segment Routing (SRv6) SIDs | RFC 9602 | 否 |
| fc00::/7 | Unique-Local | RFC 4193 | 否 |
| fe80::/10 | Link-Local Unicast | RFC 4291 | 否 |
| ff00::/8 | Multicast | RFC 4291 | 否 |
双栈,以及本站如何检测你的两个地址
浏览器一次只用一种地址族建立连接。两者都可用时,通常优先使用 IPv6(Happy Eyeballs,RFC 8305)。为了同时显示你的两个地址,ipaddress.si 会让浏览器额外访问两个主机名:一个只有 IPv4(A)记录,另一个只有 IPv6(AAAA)记录。各自看到的就是你在该地址族下的地址。如果 IPv6 请求失败,说明你的连接没有可用的 IPv6。
常见问题
- 如何知道我有没有 IPv6?
- 打开本站首页。如果显示了 IPv6 地址——无论是作为主地址还是在 IPv6 一行中——你的连接就支持 IPv6。
- IPv6 比 IPv4 快吗?
- 本身并不更快,但有可能更快:IPv6 流量常常绕过运营商级 NAT,少了一跳和一个有状态的瓶颈。
- 用 IPv6 还需要防火墙吗?
- 需要。没有 NAT 时,设备拥有全球可路由的地址;阻止未经请求的入站流量的状态防火墙,提供了 NAT 过去隐含提供的保护。
- 为什么我的 IPv6 地址总在变?
- 隐私扩展(RFC 8981)会生成并轮换临时接口标识符,使你的设备无法在不同网络间被追踪。/64 前缀通常保持不变。