5.4.4 IPv6
本课核心知识点整理
为什么需要 IPv6
IPv4 地址是 32 位,理论地址数量约为
IPv6 的核心目标是扩大地址空间。它把地址长度扩展到 128 位:
这不是简单“版本号变大”,而是为了解决地址耗尽,并顺带改进地址配置、报文处理、扩展能力等问题。
IPv4 到 IPv6 的技术迭代
| 技术 | 优势 | 不足 | 为什么需要下一步 |
|---|---|---|---|
| 分类 IPv4 | 简单,早期容易实现 | 地址分配粗糙,浪费严重 | 网络规模扩大后不够灵活 |
| 子网划分/CIDR | 更灵活,减少浪费,支持路由汇聚 | 仍受 32 位地址空间限制 | 地址总量仍不够 |
| NAT | 让多个私有地址共享公网地址 | 破坏端到端透明性,增加协议复杂度 | 是缓解手段,不是根本扩容 |
| IPv6 | 128 位地址空间巨大,支持现代网络需求 | 与 IPv4 不直接兼容,迁移周期长 | 需要过渡技术共存 |
IPv6 地址表示
IPv6 地址由 128 位组成,通常写成 8 组十六进制数,每组 16 位,用冒号分隔。
text
2001:0db8:0000:0000:0000:ff00:0042:8329每组 16 位对应 4 个十六进制数字。十六进制比二进制更短,所以 IPv6 不再使用 IPv4 的点分十进制。
压缩规则
IPv6 地址很长,因此允许压缩。
1. 每组前导 0 可以省略
text
0db8 -> db8
0042 -> 42
0000 -> 0例如:
text
2001:0db8:0000:0000:0000:ff00:0042:8329
可写为
2001:db8:0:0:0:ff00:42:83292. 连续多组 0 可用 :: 压缩一次
text
2001:db8:0:0:0:ff00:42:8329
可写为
2001:db8::ff00:42:8329注意:一个 IPv6 地址中 :: 只能出现一次。否则无法判断每个 :: 分别代表多少组 0。
| 写法 | 是否合法 | 原因 |
|---|---|---|
2001:db8::1 | 合法 | :: 只出现一次 |
::1 | 合法 | 回环地址压缩表示 |
2001::db8::1 | 不合法 | :: 出现两次,无法还原 |
地址类型
| 类型 | 含义 |
|---|---|
| 单播 | 一对一,发送给某个接口 |
| 组播 | 一对多,发送给一组接口 |
| 任播 | 一对最近/最合适的一个,多个接口共享地址,由路由决定到达哪个 |
IPv6 通常不再使用 IPv4 那种广播概念,而用组播等机制替代广播。
IPv4 到 IPv6 的过渡技术
IPv6 不能一夜之间替换所有 IPv4 网络,因此需要过渡技术。
| 技术 | 做法 | 适用理解 |
|---|---|---|
| 双协议栈 | 设备同时运行 IPv4 和 IPv6 | 两种网络都能直接通信 |
| 隧道技术 | 在 IPv4 网络中封装 IPv6 数据 | IPv6 孤岛穿越 IPv4 网络 |
| 协议转换 | 在 IPv4 与 IPv6 之间转换报文 | 让只支持不同协议的两端互通 |
考试中看到“同时支持 IPv4 和 IPv6”选双协议栈;看到“IPv6 数据穿越 IPv4 网络”选隧道;看到“两种协议直接互通转换”选协议转换。
例题
IPv6 地址长度是:
一台设备同时支持 IPv4 和 IPv6,属于:
关于 IPv6 地址中的 `::` 压缩,正确的是:
自查要点
- IPv6 为什么会出现,IPv4 的根本限制是什么?
- IPv6 的 128 位地址如何写成 8 组十六进制?
- 前导 0 省略和
::压缩分别怎么用? - 单播、组播、任播有什么区别?
- 双协议栈、隧道、协议转换分别解决什么过渡问题?