为什么会有两个版本
IPv4 是 1981 年正式定下来的。那时候联网的大多是大学和研究机构的电脑,设计者给每个地址留了 32 个二进制位,总共能编出 2 的 32 次方,大约 43 亿个号码。在当时,这个数字看起来多到用不完。
后来,个人电脑、手机、平板、智能手表、家里的各种电器都上了网,43 亿个号码很快就不够分了。2011 年,全球地址的总管理机构 IANA 把最后几大块 IPv4 地址分了出去;之后几年,各大洲的管理机构也陆续分完了自己手里的存货。
为了解决这个问题,工程师们设计了新一代的 IPv6(IP 协议第 6 版)。它的标准在 1990 年代末就已经发布,近十几年才在全世界大范围用起来。中国从 2017 年起大力推进 IPv6 部署,现在三大运营商的宽带和手机网络大多已经支持。
顺带一提:中间的“IPv5”编号曾被一个实验性的协议占用,后来没有推广,所以版本号直接从 4 跳到了 6。
两者长得有多不一样
先看一张总的对比表,后面再一项项解释。
| 项目 | IPv4 | IPv6 |
|---|---|---|
| 长度 | 32 位 | 128 位 |
| 地址总数 | 约 43 亿 | 约 3.4 × 1038 |
| 写法 | 4 段十进制,用点隔开 | 8 组十六进制,用冒号隔开 |
| 例子 | 203.0.113.42 | 2001:db8::8a2e:370:7334 |
| 本机地址 | 127.0.0.1 | ::1 |
| 家里常见情况 | 全家共用一个对外地址 | 每台设备可以有自己的对外地址 |
表里的“本机地址”指设备自己找自己用的特殊地址,像在家里喊一声“我”,永远指向你正在用的这台设备。
长度只多了 3 倍,数量却多得多:每多 1 位,地址总数就翻一倍,多出 96 位等于翻了 96 次倍。常有人打比方说,IPv6 多到可以给地球上的每一粒沙子都分配一个地址,而且还远远用不完。
IPv6 地址怎么读
128 位如果写成十进制会非常长,所以 IPv6 改用十六进制:除了 0 到 9,还用 a 到 f 代表 10 到 15。每 4 个十六进制字符一组,每组正好 16 位,一共 8 组,中间用冒号隔开。字母写大写或小写都可以,现在一般写小写。
完整写出来是这样的:
2001:0db8:0000:0000:0000:8a2e:0370:7334
这太长了,所以有两条简写规则:
- 每组开头的 0 可以省掉。
0db8写成db8,0370写成370,全是 0 的一组写成一个0。 - 连续几组全是 0,可以用两个冒号
::代替。但整个地址里只能用一次,否则别人没法知道每个::各代表几组。
按这两条规则,上面的地址可以简写成 2001:db8::8a2e:370:7334。本站首页的“图 2”会把你的 IPv6 地址展开成完整的 8 组,方便你一组一组对照着看。
小提示
以 2001:db8 开头的地址是专门留给教材和文档举例用的,现实网络里不会出现。本站的例子都用这类“示范地址”。
为什么我同时有两个地址
IPv4 和 IPv6 是两套互不相通的地址系统,就像同一个城市里同时有旧门牌和新门牌。在全世界都换成新门牌之前,网络运营商一般会让你的设备两套地址同时拿,这种做法叫双栈。
访问网站时,设备会先看对方支不支持 IPv6:支持的话通常优先走 IPv6,不支持就退回 IPv4。所以在本站首页,你可能同时看到“图 1”和“图 2”,这是正常的。
如果首页只显示 IPv4,原因可能有这些:
- 你家的光猫或路由器没有开启 IPv6;
- 你所在的网络(比如一些公司、学校或酒店的网络)暂时只提供 IPv4;
- 你正在使用的代理或 VPN 只走 IPv4。
只有 IPv4 一般不影响日常上网,绝大多数网站两种都支持。想确认自己有没有 IPv6,可以用本站的 IPv6 测试,它会分别检测两种地址能不能连通,并讲了光猫和路由器怎么开启 IPv6。
IPv6 带来了什么
- 地址够用了。运营商通常会给每户分配一整段 IPv6 地址,家里每台设备都可以有一个全世界唯一的地址,不必再挤着共用一个。
- 少了一层“翻译”。IPv4 时代,家里设备出门上网都要经过路由器的地址转换(第 3 章细讲);IPv6 通常不需要这一步,视频通话、联机游戏这类“点对点”连接会更顺畅。
- 隐私怎么办?早期的 IPv6 地址后半部分会根据网卡编号生成,容易被用来长期追踪同一台设备。现在的手机和电脑默认会使用“临时地址”,后半部分随机生成并定期更换,降低了这种风险。
需要说明的是,“每台设备都能被直接找到”不等于“谁都能连进来”。家用路由器的防火墙一般默认拦住外面主动发起的连接,所以不用担心开启 IPv6 会让设备直接暴露在外。
小结
- IPv4 是 32 位、约 43 亿个地址,已经基本分完;IPv6 是 128 位,数量多到用不完。
- IPv6 用 8 组十六进制书写,可以省略每组开头的 0,并用
::代替一次连续的全 0 组。 - 过渡期内,设备通常两套地址同时拥有,访问网站时优先用 IPv6。
- 只有 IPv4 很常见,一般不影响上网。