IPv6 地址完全解析:从结构到实战
文章目录
- [IPv6 地址完全解析:从结构到实战](#IPv6 地址完全解析:从结构到实战)
-
- [一、IPv6 地址的基础结构](#一、IPv6 地址的基础结构)
-
- [1.1 128 位如何组织?](#1.1 128 位如何组织?)
- [1.2 文本表示法](#1.2 文本表示法)
- [二、IPv6 地址的组成要素](#二、IPv6 地址的组成要素)
-
- [2.1 前缀(Prefix)](#2.1 前缀(Prefix))
- [2.2 接口标识符(Interface Identifier, IID)](#2.2 接口标识符(Interface Identifier, IID))
- [三、IPv6 地址的三大类型](#三、IPv6 地址的三大类型)
-
- [3.1 单播(Unicast):一对一通信](#3.1 单播(Unicast):一对一通信)
-
- [① 全球单播地址(Global Unicast)](#① 全球单播地址(Global Unicast))
- [② 链路本地地址(Link-Local)](#② 链路本地地址(Link-Local))
- [③ 唯一本地地址(Unique Local)](#③ 唯一本地地址(Unique Local))
- [④ 回环地址(Loopback)](#④ 回环地址(Loopback))
- [⑤ 未指定地址(Unspecified)](#⑤ 未指定地址(Unspecified))
- [3.2 组播(Multicast):一对多通信](#3.2 组播(Multicast):一对多通信)
- [3.3 任播(Anycast):一对"最近"通信](#3.3 任播(Anycast):一对"最近"通信)
- 四、特殊地址与保留前缀速查表
- [五、IPv6 vs IPv4 核心对比](#五、IPv6 vs IPv4 核心对比)
IPv6 地址长度为 128 位 ,是 IPv4(32 位)的 4 倍。如果把 IPv4 的地址空间比作一个小镇,IPv6 的地址空间就是整个银河系。IPV6的数量足够给地球上每一粒沙子分配一亿个IP地址。本文将从位级结构 到实际应用,彻底拆解 IPv6 地址的每一个细节。
一、IPv6 地址的基础结构
1.1 128 位如何组织?
IPv6 地址在逻辑上分为两个 64 位部分:
┌─────────────────────────────┬─────────────────────────────┐
│ 前 64 位 │ 后 64 位 │
│ (子网前缀) │ (接口标识符 IID) │
│ Network Prefix │ Interface Identifier │
├─────────────────────────────┼─────────────────────────────┤
│ 标识"你在哪个网络" │ 标识"你是这个网络中的哪台设备" │
│ 由 ISP/管理员分配 │ 由设备自动生成或手动配置 │
└─────────────────────────────┴─────────────────────────────┘
为什么刚好是 64/64 分割?
这是 IPv6 设计时的硬性建议:
- /64 被定义为"一个子网的标准前缀长度"
- 后 64 位留给接口标识符,足够大(2⁶⁴),可以容纳各种自动配置机制(EUI-64、随机生成、哈希等)
- 这种固定分割简化了协议设计,让 SLAAC(无状态自动配置)成为可能
1.2 文本表示法
128 位被分成 8 组 ,每组 16 位 ,用 4 位十六进制数 表示,组间用冒号 : 分隔。
完整格式示例:
2001:0DB8:0000:0000:0000:FF00:0042:8329
缩写规则(必须掌握):
| 规则 | 说明 | 示例 |
|---|---|---|
| 省略前导零 | 每组的左侧 0 可以省略 | 0DB8 → DB8,0042 → 42 |
| 双冒号压缩 | 连续多组全 0 可以用 :: 代替,只能出现一次 |
0000:0000:0000 → :: |
缩写后的标准写法:
完整:2001:0DB8:0000:0000:0000:FF00:0042:8329
缩写:2001:DB8::FF00:42:8329
为什么不能出现两次 ::?
因为 :: 代表"连续若干组 0",如果出现两次,系统无法判断每组分别压缩了多少个 0。例如 2001::DB8::1 是非法的。
二、IPv6 地址的组成要素
2.1 前缀(Prefix)
前缀表示"网络号"部分,用 CIDR 斜线表示法:
2001:DB8:1234:5678::/64
这里 /64 表示前 64 位是网络前缀,后 64 位是主机部分。
常见的前缀长度:
| 前缀长度 | 名称 | 用途 | 类比 IPv4 |
|---|---|---|---|
/32 |
ISP 分配单元 | 大型 ISP 获得的前缀块 | 类似 /8 |
/48 |
站点前缀 | 企业/家庭从 ISP 获得的标准分配 | 类似 /16 |
/56 |
小型站点 | 部分 ISP 分配给家庭用户 | |
/64 |
子网标准 | 一个 LAN 网段(有线/无线) | 类似 /24 |
/128 |
单个主机 | 只代表一台设备 | 类似 /32 |
从 /48 到 /64 的分配逻辑:
假设 ISP 分配给你 2001:DB8:1234::/48:
2001:DB8:1234:0000::/64 → 子网 0(LAN1,客厅网线)
2001:DB8:1234:0001::/64 → 子网 1(LAN2,卧室 Wi-Fi)
2001:DB8:1234:0002::/64 → 子网 2(LAN3,客房)
...
2001:DB8:1234:FFFF::/64 → 子网 65535
/48 给你留了 16 位 (4 个十六进制字符)来自由划分子网,可以创建 65,536 个 /64 子网,足够任何家庭或中小企业使用。
2.2 接口标识符(Interface Identifier, IID)
后 64 位标识网段内的具体设备。
生成方式:
| 方式 | 说明 | 特点 |
|---|---|---|
| EUI-64 | 基于 MAC 地址扩展 | 把 48 位 MAC 拆成两半,中间插入 FF:FE |
| 随机生成 | 操作系统随机产生 | 保护隐私,难以追踪 |
| 稳定隐私地址 | 基于网络前缀 + 密钥哈希 | 每个网络不同,但重启不变 |
| 手动配置 | 管理员手工指定 | 服务器常用,如 ::1、::100 |
EUI-64 转换示例:
MAC 地址: 00:1A:2B:3C:4D:5E
插入 FF:FE: 00:1A:2B:FF:FE:3C:4D:5E
翻转第 7 位: 02:1A:2B:FF:FE:3C:4D:5E ← 最终 IID
第 7 位翻转(Universal/Local 位)是为了标识这个地址是全局唯一还是本地分配的。
三、IPv6 地址的三大类型
3.1 单播(Unicast):一对一通信
单播地址是分配给单一接口的地址,数据包只发给这一个目标。
① 全球单播地址(Global Unicast)
通俗理解:你的"全球身份证号"
| 项目 | 说明 |
|---|---|
| 前缀 | 2000::/3(即以二进制 001 开头的地址) |
| 范围 | 全球互联网,公网可路由 |
| 类比 IPv4 | 公网 IP(如 114.114.114.114) |
| 特点 | 全球唯一,能在整个互联网上找到你 |
地址块举例:
| 前缀块 | 持有者 | 用途 |
|---|---|---|
2001::/32 |
Teredo 隧道 | IPv4/IPv6 过渡技术 |
2001:DB8::/32 |
文档保留 | RFC 规定只能用于示例和文档 |
2400::/12 |
亚太 APNIC 分配 | 包括中国电信 240e::/20、联通 2408::/20、移动 2409::/20 |
2600::/12 |
美洲 ARIN 分配 | 美国运营商 |
全球单播地址是 IPv6 的"主角"。如果你的设备要访问百度、刷视频、上公网,走的就是这个地址。它由 ISP(运营商)或上级网络分配,在全球范围内进行路由,就像你的真实住址,邮递员从世界任何地方都能把信送到。
② 链路本地地址(Link-Local)
通俗理解:你的"小区临时对讲机号码"
| 项目 | 说明 |
|---|---|
| 前缀 | FE80::/10(即以二进制 1111 1110 10 开头) |
| 范围 | 只在本网卡直连的这条网线上有效,不能跨路由器 |
| 类比 IPv4 | 169.254.x.x(APIPA 自动配置地址) |
| 特点 | 自动生成,无需配置,出不了本链路 |
格式:
FE80::/10 + 54 位 0 + 64 位接口标识符
实际常见:FE80::250:56FF:FE12:3456
关键特性:
- NDP(邻居发现协议):替代 IPv4 ARP,解析 MAC 地址
- SLAAC 自动配置:设备通过 FE80 地址和路由器协商,获取自己的全球单播地址。
- 路由协议:OSPFv3、RIPng 使用链路本地地址作为下一跳。两台电脑用网线直连,或者接在同一个交换机下,可以用 FE80 地址互相 ping 通。
- 不可路由:路由器见到 FE80 开头的数据包会直接丢弃,绝不允许它进入公网。
- 必须指定网卡访问 :因为每台设备的每个网卡都有一个 FE80 地址,全球重复也没关系(只在本链路有效)。所以访问时必须指定从哪个网卡出去,访问时必须指定网卡索引(Zone ID),例如
ping FE80::1%eth0。 - 自动生成:只要网卡开启 IPv6,系统就会自动给自己生成一个以 FE80:: 开头的地址,不需要 DHCP,也不需要手动配置。
③ 唯一本地地址(Unique Local)
通俗理解:你的"公司内部短号"
| 项目 | 说明 |
|---|---|
| 前缀 | FC00::/7(即以二进制 1111 110 开头,实际常用 FD00::/8) |
| 范围 | 一个组织、一个企业、一个校园网内部 |
| 类比 IPv4 | 私有地址(10.x.x.x、172.16.x.x、192.168.x.x) |
| 特点 | 组织内可路由,组织外不可路由,允许手动规划 |
生成建议(RFC 4193):
唯一本地地址应该包含一个40 位随机全局 ID,以避免不同组织合并时出现地址冲突:
FD + 40位随机数 + 16位子网ID + 64位接口ID
│ └─ 确保全球统计唯一性 ─┘ └─ 内部子网划分 ─┘
示例:
FD12:3456:789A:00FF::/64
④ 回环地址(Loopback)
::1
等价于 IPv4 的 127.0.0.1,始终指向本机,不经过任何物理网卡。
⑤ 未指定地址(Unspecified)
::
全 0 地址,等价于 IPv4 的 0.0.0.0。用于:
- 设备启动时尚未获得地址,作为源地址发送 DHCP 请求
- 监听时表示"所有地址"(如
::表示监听所有接口)
3.2 组播(Multicast):一对多通信
IPv6 取消了广播(Broadcast),所有一对多通信都通过组播实现。
| 属性 | 说明 |
|---|---|
| 前缀 | FF00::/8(二进制以 1111 1111 开头) |
| 格式 | FF + 标志(4位) + 范围(4位) + 112位组ID |
常见组播地址:
| 地址 | 含义 | 用途 |
|---|---|---|
FF02::1 |
所有节点(All Nodes) | 链路本地范围内的所有 IPv6 设备 |
FF02::2 |
所有路由器(All Routers) | 链路本地范围内的所有路由器 |
FF02::1:FFxx:xxxx |
请求节点组播(Solicited-Node) | NDP 邻居发现时,替代 ARP 广播 |
请求节点组播的精妙设计:
当设备要解析某个 IPv6 地址对应的 MAC 地址时,它不会广播问所有人,而是发送到这个特殊的组播地址:
目标 IPv6:2001:DB8::1234:5678
请求节点组播:FF02::1:FF34:5678 ← 取目标地址的后 24 位
只有拥有这个后缀地址的设备才会监听这个组播组,大大减少了无关设备的打扰。
3.3 任播(Anycast):一对"最近"通信
任播地址在格式上与全球单播地址完全相同 ,没有专门的前缀。区别只在于配置方式:
- 同一个任播地址被分配给多个不同地理位置的服务器
- 路由器根据路由协议,把数据包转发到距离最近/成本最低的那一台
- 常用于 DNS 根服务器、CDN 节点、负载均衡
示例:
Google DNS 任播地址:2001:4860:4860::8888
无论你在中国、美国还是欧洲,访问这个地址都会连接到离你最近的 Google DNS 服务器。
四、特殊地址与保留前缀速查表
| 地址/前缀 | 名称 | 说明 |
|---|---|---|
::/128 |
未指定地址 | 全 0,尚未分配地址时使用 |
::1/128 |
回环地址 | 本机自身 |
::FFFF:0:0/96 |
IPv4 映射地址 | 在 IPv6 套接字中表示 IPv4 地址,如 ::FFFF:192.168.1.1 |
::/96 |
IPv4 兼容地址(已废弃) | 早期过渡方案,不再使用 |
FE80::/10 |
链路本地 | 仅链路内有效 |
FEC0::/10 |
站点本地(已废弃) | 被唯一本地地址 FD00::/8 取代 |
FC00::/7 |
唯一本地 | 组织内部使用 |
2000::/3 |
全球单播 | 公网可路由地址 |
FF00::/8 |
组播 | 一对多通信 |
五、IPv6 vs IPv4 核心对比
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 地址数量 | 约 42 亿 | 约 3.4 × 10³⁸ |
| 子网掩码 | 可变长度,需显式配置 | 固定 /64 为主流,用前缀长度 |
| 地址配置 | 手动或 DHCPv4 | SLAAC 自动配置 + DHCPv6 |
| ARP | 独立协议 | 被 NDP(邻居发现)取代 |
| 广播 | 有 | 无,用组播替代 |
| NAT | 广泛使用 | 设计上不需要,但可用 NAT66 |
| IPsec | 可选附加 | 协议内置 |
| 头部结构 | 可变长,较复杂 | 固定 40 字节基本头部,扩展头部链式处理 |
| 校验和 | 头部有校验和 | 头部无校验和,由上层(TCP/UDP)负责 |
| 分片 | 路由器和主机都可分片 | 仅源主机可分片,中间路由器不允许 |