在我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,以上就是本期分享。