问题的规模
IPv4 地址是 32 位,理论上约 43 亿个。考虑到地址分配的历史遗留问题(早期大量地址被分配给美国机构和大型企业),全球可分配池早已枯竭。
第一个救急方案:NAT
网络地址转换(NAT)提供了一个巧妙的缓解办法:让一整个局域网的多台设备共用一个公网 IPv4 地址。
工作方式是:内网设备使用私有地址(如 192.168.x.x、10.x.x.x、172.16–31.x.x),路由器在数据包出网时,把私有地址和端口映射成公网地址的某个端口,并记录这张映射表。回程数据包再根据映射表还原,转发给内网设备。
NAT 的价值:极大缓解了地址消耗,一个家庭或企业只需一个公网地址。
NAT 的代价:
- 破坏了端到端连接模型。外网无法主动发起连接到内网设备(因为没有映射),这让 P2P 通信、视频通话、游戏联机等场景需要额外的打洞(hole punching)技术;
- 路由器要维护大量连接状态;
- 多层 NAT(运营商级 NAT,CGNAT)会让问题更复杂。
根本方案:IPv6
IPv6 使用 128 位地址,地址数量约 3.4×10³⁸ ——多到可以为地球上的每一粒沙子分配一个地址。
除了地址空间,IPv6 还做了几项改进:
- 简化的报头:提高路由器处理效率;
- 内置 IPsec 支持(虽然在实现中并非强制);
- 无状态地址自动配置(SLAAC):设备可自行生成地址,无需 DHCP 服务器;
- 取消了广播:改用组播和任播。
为什么 IPv6 推进这么慢
这是一个典型的协调问题:
- 对终端用户来说,NAT 已经能用,没有迫切的升级动力;
- 对运营商和内容提供商来说,升级需要改造基础设施,且要同时维护 IPv4 和 IPv6 两套体系(双栈);
- 任何一环不支持,都会拖累整体体验。
过渡技术
为了让 IPv4 和 IPv6 共存,出现了多种过渡机制:
- 双栈(Dual Stack):设备同时运行 IPv4 和 IPv6;
- 隧道技术:把 IPv6 包封装在 IPv4 包里穿越 IPv4 网络;
- NAT64 / DNS64:让纯 IPv6 网络访问 IPv4 资源。
现状
全球 IPv6 的采用率在持续上升,主要驱动力来自移动网络(移动运营商地址压力大)和大型内容平台。但全 IPv6 的那一天,仍然需要时间。
说明:本文为网络协议的公开知识整理。