#NAT是什么
NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能;
#NAT的作用
NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技 术方法:
很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全 局IP;
全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;
NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
在NAT路由器内部,有一张自动生成的,用于地址转换的表;
当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;
#NAT的优缺点
优点
-
节省合法的公有 IP 地址(最大的优点)
-
当网络发生变化时,避免重新编址。
-
对外隐藏内部地址,增加网络安全性
缺点
-
无法从 NAT 的外部向内部服务器建立连接(NAT穿越)
-
转换表的生成和转换操作都会产生一定的开销
-
通信过程中一旦 NAT 遇到异常需重新启动时,所有的 TCP 连接都将被重置。即使备置两台 NAT 做容灾备份,TCP 连接还是会被断开。
#NAPT
那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中, 目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机? 这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系。
主机 163.221.120.9 的端口号是 80,私网中有 2 个客户端 10.0.0.10 和 10.0.0.11 同时进行通信,并且这 2 个客户端的本地端口都是 1025。此时,仅仅转换 IP 地址为全局地址 202.244.174.37 ,会令转换后的数字完全一致。因此,为了区分这 2 个会话,只要将 10.0.0.11 的端口号转换为 1026 就可以解决问题。NAPT 路由器通过生成转换表,就可以正确地转换地址跟端口的组合,使客户端A、B能同时与服务器之间进行通信。这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项; 在断开连接后,就会删除这个表项