1、NAT
1.1、NAT过程
之前我们讨论了IPv4协议中IP地址数量不充足的问题。NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。
NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法。
很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。
全局IP要求唯一,但是私有IP不需要。在不同的局域网中出现相同的私有IP是完全不影响的。
如图,客户端A要给服务器发送消息,源地址就是客户端A的IP地址10.0.0.10,目标地址为163.221.120.9,然后客户端A拿着目标地址与自己所在子网的子网掩码进行按位与,客户端A也不知道这个IP地址是哪的,但是可以肯定的是绝对不在当前子网中,所以转发给路由器。路由器再转发给服务器,但是内网IP是不能出现在公网上的,所以将源地址替换成路由器的WAN口地址202.244.174.37,而路由器的10.0.0.1称为LAN口地址。替换后转发给服务器,将来服务器应答的时候,源地址为163.221.120.0,目标地址为202.244.174.37。但是应答到了路由器之后怎么再转发给客户端A我们还不知道。
对原始报文中的源IP地址进行替换,替换成途径路由器的WAN口IP的过程,我们称之为NAT(Network Address Translation)网络地址转换。
1.2、NAPT
客户端A给服务器发数据,源IP+端口为10.0.0.10:1025,目的IP+端口为163.221.120.9:80,首先判断目标IP不在当前子网,转发给路由器,路由器在进行源IP替换的时候,还会构建一张NAPT转换表。左边是源IP+源端口和目的IP+目的端口。右边也是如此,只不过第一行的源IP+源端口替换成路由器的了。所以路由器对报文中的源IP+端口进行替换,还会形成如图所示的映射关系,然后转发给服务器。而由于第一次建立了映射关系,之后主机A再发送给服务器到达路由器这里直接进行查表替换源IP地址即可。
左侧源IP标识了客户端A所在子网中唯一一台主机,源端口标识了该主机上的唯一一个进程。然后目的IP标识了全网唯一一台主机,目的端口标识了目的主机上的唯一一个进程。所以左侧整个部分是唯一的。右侧源IP+源端口也是具有唯一性,目的IP+目的端口同样如此,所以右侧整个部分也是唯一的。左侧和右侧都是一个四元组,并且都具有唯一性。左侧和右侧是互为键值的一组映射关系。
服务器收到后要做响应,源IP地址+端口为163.221.120.8:80,目的IP地址+端口为202.244.174.37:1025,所以服务器先转发给路由器,路由器收到后根据这四元组反向再查NAPT,将目的IP地址+端口替换为10.0.0.10:1025,然后进行内网转发,转发给客户端A。