写点什么

IPv4 只剩 100 天了

  • 2010-11-28
  • 本文字数:1775 字

    阅读完需:约 6 分钟

互联网是基于名为 IPv4 的网络协议的,该协议是 TCP(HTTP 及聊天应用使用)与 UDP(视频与音频应用使用)的基石。它使用了 4 字节的 IP 地址(如 192.168.54.32)来识别通道中的端点(大多数人和应用都会使用 DNS 名,它会将 www.infoq.com 转换为数字化的 IPv4 地址,如 63.246.7.184)。

然而遗憾的是,IPv4 地址空间很快就要耗尽了。根据 @ipv4countdown 所述,剩下的 IPv4 地址将在 100 天之内用尽;其余下的总数量不到 1.6 亿,也就是说剩下的地址大约为 9.137.0.0 个。我们已经用完了(或者说无法再分配)245.0.0.0 个 IPv4 地址,因此他们的使用速度将是非常迅速的。该数据显示在 Hurricane Electric 的一个倒计时盘中,Hurricane Electric 则是一个 IPv6 供应商。

目前还有一些 IPv4 地址可供使用。一些早先的网络先驱还留有大量的 IP 地址(可能还未使用);由于收购的原因,单个组织可能持有互联网的某个重要部分。然而,这仅仅会将 IPv4 地址将会耗尽这个不争的事实延期几个月而已。 xkcd 于 2006 年绘制的这个互联网地图展示了顶层的8 个地址(也就是1.0.0.0),像是Apple、DEC、贝尔实验室以及波音等公司都会获得IPv4 地址的1/256,这让人感到担心。

一些人认为可以使用NAT(搭配上UPnP)来解决问题,减少对公共IP 地址的需求量,但事实却并非如此。移动网络通常都会使用IPv4 NAT 为每个设备分配一个“私有”类型的网络,比如人们在热点通常会找到10.x.x.x 网络或是192.168.x.x 网络。这些虽然不是公共地址,但路由本身仍旧需要使用IPv4 地址以正常运作。

从长远来看,唯一的解决方案就是IPv6。它会极大地增加网络空间,过去十年所开发的大多数网络工具都支持IPv6,同时操作系统本身也对其提供了良好的支持。关键问题在于IPv6 向用户公布的时间太晚了,支持IPv6 的xDSL 调试解调器还不多(大多数只支持IPv4)。英国电信公司已经开始布局其 21 世纪网络了(将电话迁移到 IP 主干网上),20 世纪的网络协议让人觉得很可笑。

IPv6 本身使用了不同于 IPv4 地址的点符号。与 4 个点分十进制不同的是,IPv6 使用了 128 位,表示为 1234:5678:90ab:cdef:1234:5678:90ab:cdef 这样一组数字。为了保持向后兼容性,IPv4 地址可以写为 0000:0000:0000:0000:0000:0000:63.246.7.184(这也有助于说明 IPv6 相对于 IPv4 所带来的大量数字)。幸好,对于任意一个以 0 开头的数字来说,0 是可以被推测出来的,因此 0:0:0:0:0:0:63.246.7.184 也表示与上面相同的地址。0 的任意连续序列都可以使用两个冒号进行替换,这样::63.246.7.184 也表达了相同的含义。

现在有几个转换机制。首先,网站既可以有 IPv4 地址(叫做 A),也可以有 IPv6 地址(叫做 AAAA)。拥有这两个地址的站点可以通过任意一种网络进行访问;系统会尝试这两个地址并返回第一个(某些系统一开始会查询 IPv6 地址,然后才是 IPv4——然而,最新的 Mac OSX 更新切换了这两者的优先级)。

IPv6 的另一个优势在于网卡可以实现自我配置。借助于探测机制,IPv6 客户端可以通过来自于 IPv6 路由器的广播探测到 IPv6 地址。接下来,客户端会使用其 Mac 地址(或是随机数)填充地址的底部,赋予本地系统唯一的地址。虽然这种机制对于客户端来说没有问题,但服务器端通常需要使用特定的 IP 进行配置以便它能够注册到 DNS 上。

某些特殊的地址目前已经在使用了。FF01:: 用作本地节点的多路广播网络(也就是说特定的机器),而 FF02:: 与 FF05:: 则分别用于本地链接(相同的网络)和本地站点的多路广播。其他的还有::1,它代表本机地址(127.0.0.1)。本地地址(自动探测到的)以 FE80:: 开头。如果你有一台支持 IPv6 网络的计算机,那么你就已经获得了一个 FE80:: 地址,与 IPv4 不同的是,每个网卡一次可以有多个 IPv6 地址。此外,IPv4 每次只会使用一个 IP 地址作为“广播”地址,而 IPv6 通常会使用本地链接或是其他广播机制代替特定的地址来广播数据。

当 IPv4 地址空间耗尽之际,各个国家将会讨论他们国内的供应,这可能要持续 6 到 12 个月。一旦完成,将不会再有新的 IP 地址可供分配,任何新的连接都只能隐藏在 NAT 之后或是迁移到 IPv6。

幸好,网络供应商与 ISP 早就注意到了这一点,他们已经在 IPv6 上投入了很多,但却没有大张旗鼓地宣传。然而,明后年提供 IPv6 连接是个当务之急;问题在于:是不是有些晚了?

查看英文原文: 100 days of IPv4 left

2010-11-28 07:553053
用户头像

发布了 88 篇内容, 共 263.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

前端代码规范常见错误 二

默默的成长

前端 Vue 3 11月月更

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

Python进阶(四十)应用matplotlib绘图实战

No Silver Bullet

Python matplotlib 11月月更

React源码解读之任务调度

flyzz177

React

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

自己手写一个redux

helloworld1024fd

JavaScript

主成分分析PCA与奇异值分解SVD-降维的实现方法

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

拿到大厂前端offer的前端开发是怎么回答面试题的

loveX001

JavaScript

面试官:能用JavaScript手写一个bind函数吗

helloworld1024fd

JavaScript

React源码分析4-深度理解diff算法

goClient1992

React

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

面试官:说说React-SSR的原理

beifeng1996

React

通宵整理的react面试题并附上自己的答案

beifeng1996

React

kubernetes下的jenkins如何设置maven

程序员欣宸

maven jenkins 11月月更

前端代码规范常见错误 一

默默的成长

前端 Vue 3 11月月更

golang 中 time 包使用教程之基础使用篇

Go学堂

golang 程序员 个人成长 time.Time 时间转换

Python进阶(四十一)Python3解决“tuple parameter unpacking is not supported in python3”

No Silver Bullet

Python3 问题分析 11月月更

React源码解读之更新的创建

flyzz177

React

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

前端面试中小型公司都考些什么

loveX001

JavaScript

前端二面react面试题(附答案)

beifeng1996

React

熬夜整理的vue面试题

bb_xiaxia1998

Vue

React源码分析2-深入理解fiber

goClient1992

React

自制操作系统日记(6):静态桌面初步

操作系统

最近面试被问到的vue题

bb_xiaxia1998

Vue

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

Python进阶(四十三)glob 文件路径查找

No Silver Bullet

Python 11月月更 glob 文件查找

前端js手写面试题汇总(一)

helloworld1024fd

JavaScript

前端js手写面试题汇总(二)

helloworld1024fd

JavaScript

IO原理(二):多路复用

苏格拉格拉

reactor nio epoll IO多路复用 IO模型

IPv4只剩100天了_Java_Alex Blewitt_InfoQ精选文章