闲谈IPv6-为了每一粒沙,真实的代价!

周六早上,哈哈,喷一篇无关紧要的。


IPv6最经典的广告词,可以为地球上每一粒沙子分配一个IP地址。

提起IPv6,人们总是用这句话形容其地址之多,多到一个这么一个形象的天文数字。

到底能不能为地球上每一粒沙子分配一个IPv6地址我们姑且不论,假设这是真的,我这里想摆一摆的是,存储所有的IPv6地址需要多大的物理空间。注意!是物理空间,只有这样才能体现出实施IPv6真实的,现实中的代价。

一粒沙子到底多大呢?经常看到有人实际计算地球上沙子数量的时候用毫米做尺寸量级,但实际上那不是沙子,那是珠子。真正的沙子应该至少用毫米的十分之一甚至微米做尺寸量级,由于海底也有沙子,因此应该把地球表面积全都算上,至少5到10公里的厚度,如果你真的这么算,会发现IPv6可能并不够为每一粒沙子分配一个地址…但无论如何,本文不抬这个杠,本文说的是另一个有意思的事,即,真实的代价。

IPv6的存储空间有多大?

人们不假思索地回答, 2 1 28 × 16 2^128\times 16 2128×16字节呗,但这不是实际落地的物理空间,这只是一个逻辑数字。

如果我们把所有的IPv6地址保存在实实在在的存储介质中,结果会和 “IPv6可以为每一粒沙子分配一个IP地址” 一样令人吃惊,我所谓, “为了每一粒沙,真实的代价”, 哈哈。

我假设用当今最牛X的16TB磁盘为例存储IPv6地址,由于磁盘尺寸无论2.5英寸还是3.5英寸,其长宽高均不是容易计算的整数,我取一个折中的中间值,我假设磁盘尺寸为 10 c m × 10 c m × 1 c m 10cm \times 10cm \times 1cm 10cm×10cm×1cm,下面开始我们的计算:

  • 首先我们看每块磁盘可以存储多少IPv6地址:
    1024 × 1024 × 1024 × 1024 × 16 16 ≈ 1.1 × 1 0 12 \dfrac{1024\times 1024\times 1024\times 1024\times 16}{16}\approx 1.1 \times 10^{12} 161024×1024×1024×1024×161.1×1012

  • 我们看一共多少IPv6地址:
    2 1 28 ≈ 3.4 × 1 0 38 2^128 \approx 3.4 \times 10^{38} 21283.4×1038

  • 上面二者相除,很容易计算出需要多少磁盘:
    3.4 × 1 0 38 1.1 × 1 0 12 ≈ 3.1 × 1 0 26 \dfrac{3.4 \times 10^{38}}{1.1 \times 10^{12}}\approx 3.1 \times 10^{26} 1.1×10123.4×10383.1×1026

  • 根据我假设的磁盘尺寸大小(这个尺寸非常合理),我们知道1立方米空间中正好容纳 10000 10000 10000块磁盘,因此所有的磁盘占据的总空间是:
    3.1 × 1 0 26 10000 = 3.1 × 1 0 22 m 3 \dfrac{3.1 \times 10^{26}}{10000}=3.1 \times 10^{22} m^3 100003.1×1026=3.1×1022m3

  • 换算成立方公里:
    3.1 × 1 0 13 k m 3 3.1 \times 10^{13} km^3 3.1×1013km3

  • 来自Wiki,地球的体积为:
    1.08321 × 1 0 12 k m 3 1.08321\times 10^{12} km^3 1.08321×1012km3

上面两个数字相除,我们得到一个倍数,即28个地球大小的空间摆满磁盘,才能存储所有的IPv6地址!

好家伙,为了存储所有的IPv6地址,我们需要比地球还要大28倍的体积…这就是现实的代价!

还敢给沙子,细胞,线粒体之类的分配IPv6地址吗?问题是你分配了地址就要保存它啊。

也许你会问,IPv4难道没有这个问题吗?很抱歉,还真的没有。IPv4一共4G个地址,每一个地址4个字节,只需要16G的空间就能存放,别说磁盘,普通内存都够装入所有的IPv4地址了!

为什么会这样?!

IPv6竟然需要这么大的存储介质体积!看到这个惊人的存储介质的总体积,一般人会把锅甩给存储介质本身,比方说你会说现在的磁盘太落后了,以后总会有更小尺寸更大容量的磁盘出现。我并不否认存储器本身的技术也在飞速发展,但是我要说的点不是这个,我想说的是一个 尺度缩放 的问题。

举个我们都知道的例子,类似将一张纸对折42次,其厚度就可以到达月球之类,假设一张纸厚度 0.01 c m 0.01cm 0.01cm,简单计算就知道这是真的,就好像我们简单计算就知道IPv6真的能为地球每一粒沙子分配一个IP地址一样,然而对于折纸的例子而言,现实的问题是,这张纸有多大,以及我们要折这张纸折多长时间,如果你真的去计算了,或者你真的去实际试着折纸了,就会发现,这几乎是不可能做到。

理论往往是放大指数级增加的尺度所带来的恩惠,然而现实的代价则是指数级放大的阻力。

任何一件事均有无限个维度可以扩张,只有一个物理维度是受限的,在这个物理维度,我们必须遵守现实的物理法则。 任何事物,随着其扩张,其中物理维度的成本终将不堪重负从而使整个扩张过程停止!

虽然IPv6可以为不止一个地球上的沙子们分配独立的IP地址,但要存储这些IP地址,需要28个地球这么大的体积!这些对于我们真实世界而言,都是不可想像的。

我经常说超过几千米的摩天大楼无法建设,为了把所有人高效运输至每一个楼层,当楼层超过一定高度时,电梯占据的空间比例将会越来越多,直到所有的空间全部被电梯占据。

我也说过32位处理器上工作的好好的多级页表,用到64位处理器,如果程序地址是稠密模式,仅仅页表需要的内存就会占有超大的比例。

同样的道理,虱子长到人这么大也跳不到太空,因为它如果真的长到了人这么大,支撑它超强弹跳的生物机能开销将会大到让它变得和我们人类一样平庸,对,这就是所谓沉重的肉身。

为了强调IPv6地址之多,说什么可以为每一粒沙子分配一个地址,这个就和为了强调虱子跳得高,说什么长到人这么大可以跳到太空一样,忽略了现实的代价。

如果你了解《人月神话》里说的沟通成本,应该可以很容易理解我这篇文章说的意思。当然了,这是经理才在乎的事,对于普通工人,我推荐一本书《规模》:https://book.douban.com/subject/30244461/


浙江温州皮鞋湿,下雨进水不会胖。

猜你喜欢

转载自blog.csdn.net/dog250/article/details/111599533