写在最前面一个“设计保守”的遗憾20 世纪 80 年代初当互联网的奠基人们设计 IP 地址时他们做了一个后来被反复讨论的决定。他们认为 32 位的地址空间——大约 43 亿个地址——应该足够用了。毕竟当时全世界联网的计算机没多少台而且在他们想象中互联网只是少数大学和军事机构之间的网络。谁能想到三十多年后地球上每个人拥有的联网设备比人口还多——手机、电脑、平板、智能手表、智能音箱、甚至你的灯泡和冰箱都在上网。43 亿这个当年觉得“用不完”的数字早在 2019 年就正式宣布耗尽了。这就引出了我们今天的故事IPv4 和 IPv6。一、IPv4设计于 1981 年的“老前辈”1.1 什么是 IPv4IPv4 是互联网协议的第四个版本从 1981 年沿用至今。它的地址是一个 32 位的二进制数通常写成我们熟悉的“点分十进制”格式text192.168.1.1把这个地址拆开看它实际上是 32 个 0 和 1 组成的text11000000 10101000 00000001 00000001每 8 位一组转成十进制就是192.168.1.1。32 位总共能表示多少个地址2 的 32 次方 4,294,967,296约 43 亿个。1.2 IPv4 地址长什么样常见的 IPv4 地址大概长这样8.8.8.8Google 的 DNS 服务器114.114.114.114国内常用的 DNS192.168.1.1你家路由器的地址每一段的范围是 0 到 255总共四段。1.3 三个“专用地址”永远不会出现在公网上有三个地址段是专门留给局域网内部用的互联网上的路由器看到这些地址会直接丢弃地址段范围你能用到的地方10.0.0.0/810.0.0.0 - 10.255.255.255公司内网、大企业172.16.0.0/12172.16.0.0 - 172.31.255.255公司内网192.168.0.0/16192.168.0.0 - 192.168.255.255你家路由器你家电脑显示192.168.1.106这个地址全世界可能有几百万台设备在用。没关系因为它们都藏在各自的路由器后面永远不会冲突。二、43 亿个地址为什么还是不够2.1 当年觉得“用不完”的错觉1981 年互联网还叫 ARPANET只有几百台计算机。设计者们的想法43 亿个地址就算每人分几个也够用了。他们没预料到几件事个人电脑的普及以前一台计算机一个办公室用现在人人有一台手机的爆发比电脑还多每个人至少一部物联网你的灯泡、插座、摄像头、冰箱、门铃都在上网云计算一台物理服务器上跑几十个虚拟机每个都要 IP2.2 地址是怎么被浪费的早期的 IP 地址按“类别”分配分为 A、B、C、D、E 五类。这种分配方式很浪费A 类地址一个机构就拿走 1600 万个 IPB 类地址一个机构拿走 65536 个 IP美国通用电气公司拿到了3.0.0.0整个 A 类段1600 万个地址实际用了不到 1%。斯坦福大学拿到了36.0.0.0整个 A 类段。IBM 拿到了9.0.0.0整个 A 类段。德国的一所大学拿到了134.0.0.0整个 B 类段65536 个地址而他们当时只有几百台电脑。这种浪费加上后来的爆发式增长IPv4 地址在以肉眼可见的速度消失。2.3 最后的 IPv4 地址像石油一样被抢光全球的 IPv4 地址由五大区域机构管理APNIC亚太地区含中国、日本、印度等→ 2011 年耗尽RIPE NCC欧洲、中东、中亚→ 2012 年首次耗尽2020 年正式耗尽ARIN北美→ 2015 年耗尽LACNIC拉丁美洲→ 2020 年耗尽AFRINIC非洲→ 最后一个还有少量但也快了2019 年 11 月 25 日欧洲 RIPE NCC 分配完最后一批 IPv4 地址后全球 43 亿个 IPv4 地址正式宣告全部耗尽。这意味着你再也不可能从官方渠道申请到一个全新的、没人用过的 IPv4 地址了。三、NAT让 IPv4 多活了二十年的“神奇宝贝”既然地址不够了那大家就共用吧。3.1 NAT 是什么NAT网络地址转换就像一个小区的物业管理处整个小区只有一个门牌号公网 IP里面几百户人家你的手机、电脑、电视都有自己内部的门牌号私网 IP寄出去的快递物业帮你写上小区的门牌号送回来的包裹物业根据里面的“住户编号”找到你简单理解就是你家路由器有一个公网 IP比如 123.456.789.0下面连着手机、电脑、电视。这些设备对外访问互联网时路由器帮它们“伪装”成同一个 IP 出去等数据回来了再分发给对应的设备。3.2 NAT 的功劳没有 NATIPv4 可能早在 2005 年就撑不住了。NAT 让几亿人可以共享几千万个公网 IP极大地延缓了 IPv4 枯竭的速度。可以说是 NAT 技术为 IPv6 的部署争取了二十年的时间。3.3 NAT 的“副作用”从外面连不进来你在公司想远程访问自己家里的电脑做不到因为家里的设备没有独立的公网 IP某些游戏联机困难需要手动设置路由器做端口映射IP 溯源复杂一个公网 IP 背后可能藏着几百个用户运营商级 NAT 更坑你和邻居共用同一个公网 IP某个人干了坏事整个小区被一起封四、IPv6来自未来的“英雄”4.1 IPv6 是什么IPv6 是互联网协议的第六个版本设计目的是彻底取代 IPv4。它的地址是 128 位的。2 的 128 次方有多大340,282,366,920,938,463,463,374,607,431,768,211,456 个。约 3.4 × 10 的 38 次方。这个数字大到难以想象我们换个说法地球上每平方米可以分配 6.7 万个 IPv6 地址换句话说IPv6 的地址数量足够给地球上每一粒沙子分配一个 IP 还有剩余4.2 IPv6 地址长什么样IPv6 不再是点分十进制而是冒号十六进制text2001:0db8:85a3:0000:0000:8a2e:0370:7334每段是 16 位4 个十六进制数一共 8 段。简化写法每段开头的 0 可以省略2001:db8:85a3:0:0:8a2e:370:7334连续的全 0 段可以用::代替一次2001:db8:85a3::8a2e:370:7334常见 IPv6 地址举例Google 的 IPv6 DNS2001:4860:4860::8888Cloudflare 的 IPv6 DNS2606:4700:4700::11114.3 特殊的 IPv6 地址地址含义类似 IPv4::1本地回环127.0.0.1::未指定地址0.0.0.0fe80::/10链路本地地址自动生成169.254.x.xfc00::/7私有地址类似内网10.x.x.x192.168.x.x4.4 IPv6 的其他好处没有 NAT端到端通信回归每一个设备都可以有独立的公网 IPv6 地址从外面可以直接访问——物联网设备、摄像头、游戏机都可以直接连不需要复杂的端口映射。不需要广播IPv6 用多播和任播代替了广播网络效率更高。更好的安全性IPv6 设计时就要求支持 IPsec加密虽然现在 HTTPS 也用但底层支持更完善。自动配置设备接入网络后可以自动生成 IPv6 地址不需要 DHCP 服务器。五、IPv6 出现了这么多年为什么我们还在用 IPv4IPv6 的第一个正式标准 RFC 2460 发表于 1998 年。到现在二十多年过去了为什么你的电脑主要用的还是 IPv45.1 鸡和蛋的问题没有 IPv6 用户网站不想升级没有 IPv6 网站用户不想换破解这个循环需要有人先动。Google、Facebook 从十年前就开始支持 IPv6但目前全球 IPv6 普及率也才 30%-40% 左右。各国 IPv6 普及率参考数据国家/地区IPv6 普及率印度70%美国50%德国60%中国30% 左右5.2 改造成本高路由器、交换机、防火墙需要支持 IPv6网站代码需要适配双栈同时支持 IPv4 和 IPv6CDN、云服务商需要升级基础设施对小公司来说NAT 还能用升级 IPv6 不是刚需。5.3 NAT 太“好用”了虽然 NAT 带来了很多问题但大家已经习惯了一个公网 IP 能带几百台设备内网地址随便用不用申请自然形成了一道“防火墙”外面连不进来对于很多没有专业安全团队的小公司来说这种“默认安全”反而省了不少事。5.4 普通用户无感知你刷视频、看网页根本不会在意用的是 IPv4 还是 IPv6。只要网站能打开对用户来说没区别。这也导致网络服务商缺乏升级动力。5.5 双栈是过渡但过渡了二十年现在的做法是“双栈”设备同时支持 IPv4 和 IPv6能走 IPv6 就走 IPv6不行再退到 IPv4。但这意味着要维护两套系统成本翻倍。六、IPv4 和 IPv6 能互通吗不能直接互通。IPv4 的设备无法直接和 IPv6 的设备通信。所以需要一些过渡技术技术原理场景双栈同时支持两种协议最常用服务器和客户端都要支持隧道把 IPv6 包封装在 IPv4 包里通过 IPv4 网络传 IPv6 数据翻译在中间做协议转换纯 IPv6 客户端访问 IPv4 服务七、普通用户需要做什么基本上什么都不用做。你的操作系统Windows、macOS、Linux、iOS、Android早就支持 IPv6 了如果你的宽带运营商支持 IPv6你会自动分配到一个 IPv6 地址如果没有也不影响你正常上网如果你想看看自己有没有 IPv6访问test-ipv6.com它会告诉你是否能用 IPv6 访问互联网国内一些大城市的光纤宽带已经默认开通了 IPv6。你可以回去试试看说不定已经有 IPv6 地址了。如果你是企业或者开发者尽快让你的服务支持 IPv6特别是面向海外用户IPv6 普及率更高云服务商阿里云、腾讯云、华为云早就支持 IPv6八、未来会怎样IPv4 不会突然消失。它会像老古董一样慢慢退场过程可能会持续几十年。新设备、新网络优先用 IPv6老设备、老网络继续用 IPv4 NAT中间用隧道和翻译技术沟通最终当年那个“43 亿够用”的估计终将被 128 位的海洋彻底吞没。附录IPv4 vs IPv6 快速对比对比项IPv4IPv6地址长度32 位128 位地址数量约 43 亿约 3.4 × 10^38表示方式192.168.1.12001:db8::1配置方式手动或 DHCP自动配置NAT普遍使用不需要广播支持不支持用多播代替普及率还在用约 30%-40%本文数据参考 APNIC、Google IPv6 统计页面。IPv4 地址耗尽时间线基于各区域互联网注册机构的官方公告。