NAT技术(Network Address Translation,网络地址转换)
NAT技术是解决IP地址不够用的主要手段,是路由器的一个重要功能
-
NAT能够将私有IP对外通信时转为公有IP,也就是一种将私有IP和全局IP相互转化的技术方法
-
公有IP要求是唯一的,但私有IP不需要;在不同的局域网中出现相同的私有IP是不受影响的
-
一般每个终端设置私有IP,而在路由器或必要的服务器上设置公有IP
我们再来看看这个图
发送请求
-
我们在家里玩吃鸡游戏,就是在申请访问吃鸡的服务器
-
我们的主机有一个私有IP,打个比方就是192.168.1.201
-
对于这个主机,有一个给它分配私有IP的家用路由器,这个路由器的IP一般为192.168.1.1,这个是该路由器的对应LAN口IP
-
该路由器有对应的WAN口IP,此时我们访问吃鸡服务器,之间还有一个运营商提供给我们的路由器,运营商路由器的WAN口一般对应的是公有IP,在广域网中能够被访问到
-
在访问该路由器的过程中,家用路由器将我们本机的私有IP替换成它的WAN口IP发送给运营商路由器,所以看起来实际是WAN口IP来访问这个路由器
-
运营商再通过它的WAN口IP 122.77.241.4来通过公网访问吃鸡服务器,所以真正在吃鸡服务器看到是122.74.241.4这个IP在访问它,于是吃鸡服务器把响应返回给这个IP的节点,即返回给运营商路由器
-
NAT路由器(以上的路由器都配有NAT技术)内部,有一张自动生成的,用于地址转换的表,注意,这张表不同于路由表(route命令查看的路由表)
-
当家用路由器10.1.1.2第一次向运营商路由器就会生成表中的映射关系
返回数据(NAPT)
那么运营商服务器怎么知道是IP 为10.1.1.2的家用路由器在访问而不是IP为10.1.1.3的家用路由器在访问呢?
这时NAPT(Network Address Port Translation,网络地址端口转换)就来解决问题了,使用IP+port来建立这个关联关系
-
首先这个局域网下的两台客户机10.0.0.10和10.0.0.11都要通过应用程序(该应用程序的端口号是1025)访问同一个服务器上的应用程序,服务器上该应用程序的端口号是80
-
这两个请求同时到达了给客户机分配IP的NAT路由器(这种自动分配IP的的技术是DHCP),它的LAN口IP是10.0.0.1,WAN口IP是202.224.171.37
-
在这个路由器内部维护了一张转换表,使用IP+port的形式来解决到底是局域网内部的哪台主机的请求
-
两者到达NAT路由器的次序总有快慢,假设客户机10.0.0.10先到,那么它的请求中的源IP就被替换成202.224.171.37,它的端口号不变默认是1025(这是NAT技术)
-
好这个时候客户机10.0.0.11的请求来了,它的请求中的源IP也被替换成202.224.171.37,但是端口号1025已经被上一个客户机给占了啊,所以路由器就往后找一个没有使用过的端口号给该客户机(在上图中就是1026),这样两个请求对应的转换表就形成了
-
在服务器看来,这就是源IP为202.224.171.37上的两个应用程序来访问的我(分别是1025和1026),那就分别把对应的应答发送给源IP上的1025和1026端口应用程序
-
路由器接着根据转换表,发送给每个请求对应的客户机。
-
这种关联关系也是NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项;在断开连接时,就会删除这个表项
NAT技术缺陷(因为太过于依赖这个转换表)
-
无法从NAT外部向内部服务器进行连接
-
装换表的生成和销毁都需要开销
-
通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也会断开
NAT和代理服务器的区别
-
从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
-
从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层
-
从使用范围上讲, NAT⼀般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网
-
从部署位置上看, NAT⼀般集成在防火墙, 路由器等硬件设备上, 代理服务器则是⼀个软件程序, 需要部署在服务器上
代理服务器的技术
- 翻墙:广域网中的代理
- 负载均衡:局域网中的代理
NAT与桥接模式的区别
-
桥接模式:此模式虚拟机就是局域网一台独立的主机,需要手动配置IP地址、子网掩码,而且还要和本机处于一个网段才行,这样才能够和本机进行通信。同时,配置好网关和DNS的地址之后,以实现通过局域网的网关或路由器访问互联网
-
NAT模式:此模式虚拟机借助NAT功能,通过本机的网络来访问互联网。NAT模式下的虚拟机的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手动修改,因此虚拟机就无法和局域网中的其他主机进行通信。
-
像我的虚拟机就是采用NAT模式网络连接,可以先在Windows下的cmd命令窗口输入窗口输入ipconfig,找到VMnet8选项,可以找到IPv4的地址和子网掩码
我们可以在虚拟机中看一下虚拟机的IP地址和子网掩码