在我1几年,读大学,学计算机的时候,老师就说,这个ip地址很快就用完了。过不了几年,大家就用ipv6了。

从那时候到现在,至少有十年了。目前,依然没有看到 ipv6 在大范围使用的情况。

另外,现在随着云计算的普及,租用一个云服务器非常的方便。按理来说,这个ip地址消耗的速度,应该是更快了。

但大家依然还在使用 ip 地址,来登录云服务器。

看起来,这个ip地址是取之不尽、用之不竭呀。

真的是这样吗?

今天,围绕这个问题,我们来聊一下 ip 。

1、ipv4

我们通常说到的ip、用到的ip,指的就是 ipv4。

它是由4段数字组成。每段数字的范围是 0~255,256个。

所以,ip地址 的总数就是:256 x 256 x 256 x 256 = 4,294,967,296 ≈ 43 亿个地址

听起来很多,但全球人口 80 亿,电子设备的数量可能都不止几百亿了吧。

如果每一台设备,都发放一个独立ip。那么,这个ip地址肯定是不够用的。

那么,问题来了。这个事情,为什么不早点解决呢,当初在设计ip地址的时候,就没有想过这个问题吗?

没错,确实没有考虑过这个问题。IPv4 是 1981 年设计的,在那个年代,全球的互联网才几百台设备。而且,使用电脑的用户,都是大学、科研所、军队这些机构。

当时的计算机工程师们,谁也没有想到,互联网能像现在这样走进千家万户。

2、如何解决

ip地址会用完的问题,并非近几年才出现的,而是在上个世纪90年代就有人提出了这个问题,并且有了解决方法。

2.1 公网ip和私网ip

ip分为两种: 公网ip、私网ip(或者说局域网ip)。

公网 ip 是全球唯一的。

比方说,你买的服务器ip,就是一个公网IP,所有人只要打开浏览器,输入那一串数字,就能访问到你的服务器。

那什么是私网ip呢?

我们以家庭上网为例。

打开你的电脑、手机,你会看到每一个设备都会有一个ip。

这个ip是私网ip,或者说局域网ip。

顾名思义,这个局域网ip只在这个区域内有效,出了这个圈子,这个ip地址就没有意义了。

比方说,你让隔壁的邻居,输入你家电脑的ip,你会发现是访问不通的。虽然你们近在咫尺,但它在网络世界里面是不通的。

看下面这个图你就明白了。

每家每户的电子设备的ip都是局域网ip,都是由自家的路由器网关维护着。彼此之间不能直接通信。

所以,它们不需要独立的ip。因此,即便ip地址重复了也无所谓。

就好比你住在3栋2单元202,我也住在3栋2单元202。只不过,咱们是不同小区罢了。

根据上面的分析,可以看到公网虽然有限,但私网ip可以有无数个。

所以,这种划分方式,极大减轻了ip地址数量不足的问题。

2.2 nat技术

讲完上面这个背景知识之后,我们再来梳理一下上网的流程。

接下来,我们还是以家庭上网为例。

这里,我把整个链路的模型简化一下。

每个家庭的电子设备在上网的时候,它发送的数据都是先到达家庭路由器(网关),然后,通过路家庭由器再给到运营商(联通、移动……)的公网服务器。

这个时候,你的这条数据就正式进入了互联网的世界。

而这个公网服务器,有独立的ip,然后,它会将你的数据,发送到目标服务器上。

手机 192.168.1.2  ──┐
电脑 192.168.1.3  ──┤── 路由器(NAT)── 公网路由器网关(NAT) IP 1.2.3.4 ── 互联网
平板 192.168.1.4  ──┘

我们的请求数据过去了,肯定会有响应数据回来。

而这些网络设备,它们在发送数据的时候,都会维护一个数据表。记录下这些数据的来源。

比方说,公网的服务器会记录——这条数据是老张家的路由器传过来的。老张家的路由器会记录,这条数据是手机传过来的……

当有数据传回来的时候,这些网络设备就会按图索骥,把响应数据给到对应的电子设备。

而这个记录数据来源映射关系的技术,就叫做NAT技术。

它的英文全称就是 Network Address Translation ,中文意思就是网络地址转换。

NAT数据表,记录着网络请求的映射关系。

内部IP          内部端口  公网IP      公网端口  目标IP           目标端口
192.168.1.2    54321    1.2.3.4    10001    142.250.80.46      443   ← 手机
192.168.1.3    61234    1.2.3.4    10002    104.244.42.65      443   ← 电脑
192.168.1.4    55678    1.2.3.4    10003    172.217.14.78      443   ← 平板

也正因为有公网、私网的划分,以及nat技术的存在,才让我们的ip地址,没有这么快的消耗殆尽。

2.3 IPv6

最后我们简单来提一下,ipv6吧。

说到底,ipv6这个方案才是从根上解决ip地址耗尽的方案。

ipv6长什么样呢?

ipv4是4段数字组成。

而ipv6,是8段十六进制数组成的。

它能覆盖的地址数量,达到 2¹²⁸ = 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址。

这个数量用不完哈,根本用不完。

在ipv6的时代下,我们根本不需要再区分公网、私网,每一台设备都可以拥有一个独立的ip。

那为什么现在不推广呢?

主要两个原因:

1、不够紧迫。

2、从 ipv4 切换到 ipv6 ,这个改造成本会比较高。


其实,了解计算机发展历史的朋友,都会发现 —— 不管是硬件还是软件,不管是GPU、linux操作系统、缓存技术、数据库技术、消息队列技术、红黑树等等,

技术的发展和创新,都伴随着问题。

有了问题之后,聪明的人类,就开始想解决方案,当然,肯定会有很多的解决方案。

然后,市场或者行业协会,就会筛选出其中最优的解决方案。

而不是说,一拍大腿,我们今天搞一个数据库吧,我们今天搞一个http协议吧。

作为计算机行业的从业人员,我觉得落脚点还是放在生产实践中。

多去实践,通过问题来找解决方案,从而实现技术创新和自我提升。

ok,以上就是本期分享。