📖 从 IPv4 向 IPv6 过渡
🎯 课程摘要:因特网上使用 IPv4 的路由器数量庞大,无法一蹴而就全部改用 IPv6,只能逐步演进且保证向后兼容。本课介绍两种过渡策略:双协议栈(Dual Stack)与隧道技术(Tunneling)。
📝 详细笔记
1. 过渡的基本概念
- 演进必要性:英特网上使用 IPv4 的路由器数量太大,要让所有路由器都改用 IPv6 并不能一蹴而就,因此从 IPv4 转变到 IPv6 只能采用逐步演进的方法。
- 向后兼容:新部署的 IPv6 系统必须能够向后兼容,即 IPv6 系统必须能够接收和转发 IPv4 数据包,并能为 IPv4 数据报选择路由。
- 两种过渡策略:
- 使用双协议栈(Dual Stack)
- 使用隧道技术(Tunneling)
2. 双协议栈技术(Dual Stack)
- 概念定义:在完全过渡到 IPv6 之前,使一部分主机或路由器装有 IPv4 和 IPv6 两套协议栈。
- 原理解析:
- 双协议栈主机或路由器既可以和 IPv6 系统通信,又可以和 IPv4 系统通信。
- 双协议栈主机或路由器标记为
IPv6/IPv4,表明它具有一个 IPv6 地址和一个 IPv4 地址。 - 与 IPv6 主机通信时采用 IPv6 地址,与 IPv4 主机通信时采用 IPv4 地址。
- 双协议栈主机通过域名系统 DNS查询目的主机采用的 IP 地址:若 DNS 返回 IPv6 地址则使用 IPv6,若返回 IPv4 地址则使用 IPv4。
- 首部转换方法举例:
- 主机 A、B 都使用 IPv6;路由器 R2、R3 只使用 IPv4;路由器 R1、R4 是 IPv6/IPv4 双协议栈路由器。
- 主机 A 给 B 发送 IPv6 数据报,首部中流标号字段值为 X,目的地址为 B 的 IPv6 地址。
- R1 不能向 R2 转发 IPv6 数据报(R2 只用 IPv4),于是 R1 把 IPv6 数据报首部转换为 IPv4 数据报首部,源/目的地址由 IPv6 地址转换而来。
- R2 → R3 转发转换后的 IPv4 数据包;R4 再将其恢复成原来的 IPv6 数据报发送给主机 B。
- ⚠️ 重点/考点:IPv6 首部中的某些字段(如流标号字段)无法转换,恢复时也无法恢复,这种信息损失是使用首部转换方法所不能避免的。
3. 隧道技术(Tunneling)
- 核心思想:
- 当 IPv6 数据报要进入 IPv4 网络时,将 IPv6 数据报重新封装成 IPv4 数据包,即整个 IPv6 数据报成为 IPv4 数据包的数据载荷。
- 封装有 IPv6 数据报的 IPv4 数据包在 IPv4 网络中传输。
- 当 IPv4 数据包要离开 IPv4 网络时,再将其数据载荷(即原来的 IPv6 数据报)取出并转发到 IPv6 网络。
- 举例说明:
- 主机 A 发送给 B 的 IPv6 数据报,流标号字段值为 X,目的地址为 B 的 IPv6 地址。
- 路由器 R1 收到后,将其当作 IPv4 数据包的数据载荷,添加一个新的 IPv4 首部使之成为 IPv4 数据包,转发给 R2。
- IPv4 首部中的源地址是 R1 的 IPv4 地址,目的地址是 R4 的 IPv4 地址。
- R2 → R3 → R4 转发;R4 将数据载荷解封得到 IPv6 数据报,转发给主机 B。
- 就好像在 R1 和 R4 之间为 IPv6 数据报打通了一条专用隧道:R1 是隧道入口,R4 是隧道出口。
- ⚠️ 重点/考点:要使双协议栈路由器 R4 知道 IPv4 数据包的数据载荷是 IPv6 数据报,IPv4 数据包首部中协议字段的值必须设置为 41。
4. 两种过渡方式对比
| 对比项 | 双协议栈(Dual Stack) | 隧道技术(Tunneling) |
|---|---|---|
| 核心做法 | 装两套协议栈,按需选用 | 将 IPv6 数据报封装为 IPv4 数据包的载荷 |
| 关键操作 | 首部转换(IPv6 首部 ↔ IPv4 首部) | 封装/解封(加/去 IPv4 首部) |
| 信息损失 | 有(流标号等字段无法转换和恢复) | 无(保留完整 IPv6 数据报) |
| IPv4 首部协议字段 | —— | 必须设置为 41 |
| 对 DNS 依赖 | 依赖 DNS 判断使用 IPv4/IPv6 地址 | 不依赖 |
| 适用场景 | 双方需同时支持两套协议 | 穿越 IPv4 网络连接两个 IPv6 网络 |
💡 核心总结
- 过渡只能逐步演进,IPv6 系统须向后兼容 IPv4。
- 双协议栈靠首部转换,会有信息损失(流标号字段不可恢复)。
- 隧道技术靠封装/解封,IPv6 数据报完整保留,IPv4 首部协议字段须设为 41。
❓ 课后思考 / 经典考题
- 双协议栈主机如何决定使用 IPv4 还是 IPv6 地址与目的主机通信?(DNS 查询)
- 使用双协议栈首部转换方法时,哪些 IPv6 字段无法转换?为什么会造成信息损失?
- 隧道技术中,IPv4 数据包首部的协议字段为何要设置为 41?
- 对比双协议栈与隧道技术,哪种方式能保证 IPv6 数据报的完整信息?为什么?