NAT是如何拯救IPv4的?

666次阅读

导入:

试想一下,世界那么大,快递员是凭借什么知晓要将包裹送往何处的呢?没错,那就是我们在快递面单上填写的地址。同样的,在广阔的网络世界中,设备间想要互相通信,也需要这么一套地址系统来确定数据要送往何处。这套地址系统称为IP(网际协议),而这套系统的第四个版本便称为IPv4,这也是此协议第一个被广泛部署和使用的版本。

IPv4的设计者们慷慨地分配了约43亿个IPv4地址。在那个只有大型机和少数研究所联网的时代,这简直是个天文数字,仿佛取之不尽,用之不竭。然而,随着个人电脑的普及和物联网设备的爆炸式增长,一朵乌云悄然笼罩了全球互联网:IPv4地址即将耗尽。

截至2019年11月26日,随着欧洲网络协调中心(RIPE NCC)宣布其地址池清空,全球43亿个IPv4地址已全部分配完毕,也就是说再没有新的IPv4地址可以分配给新接入网络的设备。但今天,来着我们最新的设备的数据依旧可以准确地在网络世界中穿行,似乎并未受到地址枯竭的直接影响。这背后,是NAT(网络地址转化)立下了汗马功劳。它虽非终极解决方案,但却通过巧妙的技术,为IPv4成功“续命”数十年。

第一章:危机来临——何为IPv4?IPv4地址为何会不够用?

在现实世界中,我们用国家、省、市、区、门牌号等来表示一个确定的地址。而IPv4选择用由点分隔的四组数字表示一个确定的地址(如 192.168.1.1)。其中每一组数字最大为256,理论上,它能产生约256的4次方,也就是约43亿个独立地址。这在那个电子设备稀少的年代,似乎,这是相当够用的…..

NAT是如何拯救IPv4的?

于是,就像这个让无数同学DNA动了的画面显示的一样,当时的运营商会为每一个连接到网络的设备分配一个独立的公网地址,每一台联网设备的数据都可以经互联网直接传送到另一台设备。

NAT是如何拯救IPv4的?

然而,这么分配着分配着,味儿有点不太对了…….

首先是设备数量爆炸:从电脑到手机,再到现在的智能电视、音箱、摄像头甚至灯泡,需要联网的设备越来越多,消耗掉的IP地址也越来越多。

其次是IPv4分配方式低效:早期地址是按“类”大块分配的,导致大量地址被闲置浪费(有兴趣的同学可以查阅资料了解)。同时,相当一部分地址是为专业用途保留的,不能作为常规用途使用,如专用网络(如192.168.0.1~192.168.255.254,约1800万个)、多播地址(约2.7亿个),这使得可分配的IPv4地址远远没有43亿个那么多

如果继续维持这样每个设备都需要一个全球唯一的公网IPv4地址的实现方式,那么地址池早在十年前就该干涸了。这时,NAT技术上演了一场精彩的对IPv4的“续命行动”。

第二章:NAT——信息的“中继站”

NAT(网络地址转换)的核心思想其实就一个——共享一个“地址”

(1)NAT简述与基本网络地址转换(Basic NAT)

还是用现实中的快递系统做类比:假如一个写字楼内部有100个房间,但对外只有一个街道门牌号,为了区分这100个房间,我们可以为它们分配101、202类似的编号。这样的编号可以在世界各地的写字楼重复使用,但只有在自己所在的写字楼范围内有意义。当我们在写字楼之间邮寄信件时,快递员并不认识这种内部编号,于是他只会将所有的包裹送到写字楼前台,转而交给写字楼的管理人员进一步送到各个房间。

这样编号的好处是,我们不需要给世界上每一个房间分配一个独一无二的门牌号,从而可以节约门牌号的数字地址资源,同时让世界上任意两个房间都可以相互通信。

互联网的世界也是如此。人们将一部分公网IP地址单独划为私网IP地址,作为局域网中可通信的IP地址。这些IP地址可以在世界各地的局域网内重复使用,但只有在自己所处的局域网内有意义,因而无法全球路由。当写字楼中有人需要邮寄包裹时(不妨假设为Tom),他要先将寄出的包裹送到写字楼的前台,再由前台统一交给快递员。前台会把寄件人地址的房间编号统一替换成写字楼的门牌号,并在内部小本本上记下“101房间的Tom客人寄了一封信”。而所有回信也会统一送到酒店的前台,前台再根据记录将收件地址替换为对应的房间编号,准确地将信件送回101房间的Tom。

NAT是如何拯救IPv4的?

网络地址转换(NAT),要实现的就是网络空间中这个中转“前台”的功能,即将来自内网的数据包的私网IP转换为公网IP并发送到互联网上,以及将来自互联网的数据包的公网IP转换回原先的私网IP发送回内网中。基本网络地址转换(Basic NAT)就是一种对IP地址进行转换的NAT方式。

但问题在于,Basic NAT的会话表实际上只记录了若干对私网IP和公网IP的映射关系。每映射一个私网IP,就需要一个公网IP,因此公网IP的数量至少与要映射的私网IP数量一样多。如果创建了多个私网IP地址与同一公网地址的映射关系,就好像收货地址只写到写字楼的包裹只能堆放在前台一样,Basic NAT服务器也无法知晓来自公网的数据究竟要送往哪个私网IP地址。因此Basic NAT无法让多个私网设备共享少量的公网IP,没有实现我们节约公网IP地址的目的。

(2)网络地址端口转换(NAPT)

显然,在实际的计算机网络中,一台设备可能会同时与多个服务器或同一服务器不同服务建立连接,就好像一台电脑连接多个USB设备需要多个USB口一样,为了实现同一IP地址下的多个连接,在IP地址外,我们还需要引入端口的存在。端口是一个非负整数,其范围介于0与65535之间,表示形如192.168.168.1.1:80,也就是说任何的网络连接其实都是“某一IP地址的某个端口与某一IP地址的某个端口”之间的连接。

就像我们刚刚提到的一样,为了解决Basic NAT的问题,NAPT将“某一私网 IP与公网IP”的映射关系精细到了“某一私网IP地址的某个端口与公网IP地址的某个端口”的映射关系。

以往如果希望让两台PC(192.168.1.1,192.168.1.2)同时上网,需要分别将他们映射到两个不同的公网IP:

192.168.1.1:Any<—>1.1.1.1:Any

192.168.1.2:Any<—>1.1.1.2:Any

有了NAPT,我们可以将他们映射到同一个公网IP,而用不同的端口区分网络连接:

192.168.1.1:45600<—>1.1.1.1:100

192.168.1.2:45600<—>1.1.1.1:101这种转换真正实现了让多个私网设备同时共享一个公网IP的效果,这也是目前被广泛应用的NAT类型。

第三章:NAPT工作模拟——一次完整的连接之旅

下面,让我们模拟一次连接看看NAPT实际上是如何工作的

1.创建私有地址空间(一般由私网的DHCP服务器实现):IANA(互联网号码分配机构)特意保留了三个IP地址段(10.0.0.0~10.255.255.255、172.16.0.0~172.31.255.255、192.168.0.0~192.168.255.255)作为私有IP地址,仅供私有网络内部使用,同一私网域内的设备可以使用这些私有地址互相访问,但不能由公网直接访问私网域内的设备。你在使用家庭网络和校园网时获取到的基本都是这些私有IPv4地址。

2.发起连接:你电脑的浏览器使用一个端口发起对百度服务器(223.109.82.16:443)的连接请求,设备会将这个请求信息打包成一个数据包,通过局域网首先送达到你所在网络的路由器

3.  地址转换:当路由器接收到设备发来的数据包后。路由器会用自己的公网IP(如 1.1.1.2)替换掉数据包中你电脑的私有IP,同时选择一个当前未使用的路由器自身端口(如25505)替换数据包的源端口,然后将数据包发出

4.  拿出小本本,建立会话表:为了能准确地把百度的返回数据送回到你的电脑(而不是家里的手机或电视),路由器会创建一条NAPT会话表项,记录关键映射关系:内网IP:端口 (192.168.1.2:1024) -> 公网IP:端口 (1.1.1.2:25505),以及目标服务器地址223.109.82.16:443。随后它便会等待百度服务器的数据包,根据会话表替换掉返回数据包内的目标IP和端口,将数据准确送回你的电脑。构建起你的电脑和百度服务器之间的连接。

NAT是如何拯救IPv4的?

第四章:总结与展望

简单来说,所谓NAT,实现的让一个设备充当众多设备的传声筒,让众多的设备得以共享同一个IP地址。大大缓解了IPV4地址资源的紧缺性。

然而,就像很多共享产品一样,这种IP资源共享也带来了许多难以解决的问题。

  1. 影响P2P服务运行:它破坏了互联网端到端的通信模型,给一些依赖公网IP的服务(如P2P下载、游戏联机)带来了复杂性。
  2. 连带封禁风险:多个设备共享同一个IP地址的同时,其实在一定程度上共享了同一套网络身份。在服务商在对异常流量的发起者进行封禁时(一般是封禁异常流量的发起IP),这使得与发起者共享同一个IP地址的设备也将被连同封禁。这在某些问卷调查平台和游戏平台尤为明显。
  3. 溯源困难:由于网站的日志系统一般只会记录访问者的IP地址,这使得在进行网络溯源时难以精确到具体的设备。这为网络空间执法带来了困难

真正的解决方案是拥有海量地址空间(理论上2的128次方个,这足以为地球上每一粒沙子都分配一个IP地址)的 IPv6。2024年07月12日工业和信息化部办公厅已经正式印发《关于开展“网络去NAT”专项工作 进一步深化IPv6部署应用的通知》,目前,固定城域网出口IPv6流量占比已达32.77%,移动互联网领域流出IPv6占比甚至已突破73%。相信在可预见的未来里,NAT必将迎来属于它的淡出网络世界的一天。但在从IPv4向IPv6漫长而艰难的过渡期中,正是有了NAT的存在才让现有的互联网得以平稳运行至今,保障了我们每一台设备连接到互联网的权力。

参考资料:

1.维基百科IPv4:https://zh.wikipedia.org/wiki/IPv4

2.维基百科网际协议:https://zh.wikipedia.org/wiki/网际协议

3.华为Info-Finder什么是NAT:https://nfo.support.huawei.com/info-finder/encyclopedia/zh/NAT.html

4.国家IPv6发展平台https://www.china-ipv6.cn

正文完
 4

橘子的小站