IP地址数量限制的解决方案------NAT技术

        在这篇博客中,介绍了有关如何高效的利用IP地址资源的问题。通过CIDR提高了IP资源的利用率,减少了浪费,一定程度上缓解了IP资源的数量问题。但是,IP地址还是不够用,因为

(1)IPv4总共有32位,总共能表示的IP地址大约为43亿,总量是有限的;

(2)在IP地址中存在着一些特殊的地址,使实际能够使用的IP地址资源减少;

(3)IP地址并非按照主机台数来配置的,而是每个网卡都需要一个或多个IP地址。

        这就使得能够接入网络的主机台数变得更少了。所以利用以下方法来解决:

(1)动态分配IP地址:只给接入网络中的设备分配IP地址。也就是说,对于某一固定MAC地址的设备,今天接入网络中的IP地址和明天再次接入网络中的IP地址可能是不相同的;

(2)制定IPv6协议:它共有128个比特位16个字节,因此IP地址的总量增加。它并不是IPv4的升级版,它与IPv4互不兼容。单只它现在还没有普及。

(3)使用NAT技术。

        下面重点介绍NAT技术。在介绍NAT技术之前先了解一些基本概念。

私有IP地址和公有IP地址

        在很多机构内部的主机,大部分情况下都是只与该机构内部的主机之间进行通信,并不需要与因特网相连。所以在该机构内部可以任意分配IP地址,只要该机构内部的各主机IP地址互不相同即可。这种仅在本机构内部使用而不接入因特网的IP地址称为私有IP地址。因为这些主机只在本机构内部进行互相通信,所以只要本机构内部的主机IP互不相同即可,而对于不同机构之间的私有IP是可以相同的。连接到因特网上的可以在全球范围内进行通信的IP地址就称为公有IP地址。显然,公有IP地址在全球范围内时唯一的。

        在因特网上的所有路由器,对目的主机是私有IP的数据一律不转发。

        原则上,私有IP地址可以是任意的。但是如果某机构中的私有IP地址与某个公有IP地址重合,当该私有IP主机需要访问互联网时,可能就会出现地址的二义性。因此,规定了用于组建局域网的私有IP地址:

(1)10.0.0.0~10.255.255.255

(2)172.16.0.0~172.31.255.255

(3)192.168.0.0~192.168.255.255

        除了上述的三个范围内的地址,其他的地址均值公网IP地址。

        每个路由器配置有一个WAN口IP,同时还有一个LAN口IP。WAN口IP用于与它的上一级进行通信。LAN口IP表示该路由器的子网IP。同一级别的不同路由器的LAN口IP都是一样的(因为不同局域网中的私有IP可以相同),但是WAN口IP必须不同。路由器一级级往上,到最上层的连接在因特网上的路由器,它的WAN口IP就是一个公网IP了。如下图:

IP地址数量限制的解决方案------NAT技术_第1张图片

NAT技术

        当子网的主机需要与外部服务器进行通信时,即需要访问因特网资源时,此时只有公网IP才能在因特网上进行数据传输。因此,该主机会首先将自己的源IP替换成它所在局域网上的路由器的WAN口IP,然后,该路由器再一级一级往上替换,最终替换为一个一个与因特网相连的具有公网IP的路由器的WAN口IP,此时,就可以在因特网上进行数据通信了。这种一级一级由LAN口IP往上最终替换为公网IP的技术就称为NAT技术。

        在上图中,如果B服务器要与与因特网上的E服务器进行数据通信(B向E请求资源等),B在要向E服务器发送数据报。所以,源IP是192.168.1.2/24,目的IP是122.77.241.7/24。

        当数据报达到家用路由器2时,发现该数据报的目的IP是一个公网IP,于是就将该数据报的源IP地替换为自己的WAN口IP:10.1.1.3/24。然后再将数据报发送给运行商路由器1,同理运营商路由器1也将该数据报的源IP替换为自己的WAN口IP:122.77.241.5/24。此时该数据报的源IP就是一个公网IP了,然后就可以与同在因特网上连接的具有公网IP的E服务器进行数据通信了。如下图:


        上述的网络地址转换技术就称为NAT技术具有NAT功能的路由器称为NAT路由器。

NAPT

        在NAT服务器的内容有一张自动生成的,用于地址转换的表,每替换一次就将替换前后的IP地址的对应关系记录下来。

        如果上述的B和C服务器都向E服务器申请资源。B和C服务器发出的数据报的源IP最终都会被替换为公网IP122.77.241.5/24。当目的主机将两个响应数据报返回时,源IP就变成了122.77.241.7/24,目的IP为:122.77.241.5/24。数据报经历的两个路由器中的地址转换表为:

IP地址数量限制的解决方案------NAT技术_第2张图片

        当两个响应数据报都发给运营商路由器1时,它根据转换表将目的IP替换为10.1.1.3/24。然后发给家用路由器2。家用路由器的转换表中有两项。此时数据报的源IP和目的IP与这两项都对应,那应该如何进行转换吗?应该转换为B服务器还是C服务器的的私有IP呢?此时,就会出现问题。那应该如何进行标识呢?

        因为在网络通信中,IP地址+端口号可以唯一的标识一台中的中的进程。所以可以通过IP地址+端口号之间的映射关系来进行区分,如下图:

IP地址数量限制的解决方案------NAT技术_第3张图片

        上图中,B,C服务器中端口号为8080的进程都向E服务器端口号为80的进程发送数据请求(因为端口号用来区分一台主机中的各进程,因此不同主机的端口号是可以相同的)。当数据发送到家用路由器2时,分别创建两个端口号来8000,8001标识这两个数据请求(这两个端口号的创建与原来的端口号没有关系),再将源IP地址替换为自己的WAN口IP。当响应数据报发送回来时,就可以通过这两个端口号来区分数据包应该发给哪个服务器。

        上述通过IP地址+端口号建立映射关系的技术就称为NAPT。这种映射关系表也是由NAT路由器自动创建的。

NAT技术的缺陷

(1)无法从外部局域网内部的私有IP服务器发起请求连接。

        例如在上例中,如果E服务器要向B服务器发送连接,他并不知道B服务器所属哪个公网IP,所以也就不知道要将数据报发给哪个公网IP。因此私有IP的主机不能充当服务器使用,使用NAT技术的通信必须由私有IP主机发起。

        所以,如果我们自己编写的服务器程序如果要想被所有的人访问到,就要将程序部署到具有公网IP的服务器上,如上图中的E服务器上,而不能部署到B,C等具有私有IP的服务器上。

(2)转换表的生成和销毁都需要额外的开销;

(3)在通信过程中一旦NAT设备出现故障,所有的TCP都会断开连接。


你可能感兴趣的:(计算机网络)