NAT-网络地址转换

Zss 发表于:

以前简单的认为NAT就是一个将私网地址映射到公网地址的一种技术,其实也只是大概知道这个概念,知道他是做什么的,能有什么用处,实际中间的过程不是很清楚

而且NAT可不只是从内网地址映射到外网地址,仔细查阅一下,才发现他其实分为很多种,这次我想把他理清楚

1.NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”

它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上

顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题

2.NAT的分类

静态NAT(Static NAT)      动态地址NAT(Pooled NAT)     网络地址端口转换NAPT(Port-Level NAT)

实际上我们常常使用到的所说的是NAPT,它是将内部的IP地址映射到外部IP地址上不同的端口

使用的路由器,网关中,使用到的也就是它,然而以前认为nat就是指从私网映射到外网,实际上这个是指的SNAT,源网络地址转换,将需要出口的地址映射成公网ip,也就是源地址,就是我们主动发起请求的源

那么在想想,外部网络确实是不能访问私网地址,那么我们打开百度时为什么百度服务器的数据可以到我的电脑中来呢?

这就是DNAT,目的网络地址转换,与SNAT恰好相反

(1)源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。

(2)目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT

画一张图可以清晰的看到数据包经过网关时中所做的NAT修改

如图:1.当我的PC发起请求,数据包的源地址那么就是自己:192.168.16.22,那么数据包的目的地址是哪里呢?当然是要发送到那里就去哪里,也就是公网的服务器地址

2.好了,此时的数据包将会被发送到此二层网络的上一层网关也就是192.168.16.1,我们都知道路由负责数据包的转发,此时数据包到了网关这里了

3.因为公网中是不允许私网地址的通信的,那么192.168.16.22这个地址也就失效了,所以网关需要将这个请求数据包的源地址修改为一个公网地址再发送出去,这个公网地址也就是网管wan侧的ip,此时所进行的也就是SNAT

4.修改完数据包成功的发送到了公网的服务器,服务器需要将数据返回来,那么新的数据包此时服务器ip也就是响应数据包的源地址,发到哪里去呢?请求时从哪里来的,那么我就发送到哪里去

5.响应的数据包被发送到了网关,此时网关就数据包将其修改成之前请求的PC的私网ip地址,此时进行的也就是DNAT

6.最后PC成功的接收到公网中服务器的响应

以上的例子实际只是最简单的组网,实际我们上网一般都不止经过一个路由,就PC算有公网ip来上网,到了公网传输时,这个中间有也会有涉及到多个网关的转发

在私网中也可能存在很多个上层路由,那么数据包依次修改源地址发送到上一层网关,直到到最高层的路由发送出去

只有内网主机主动向外网发送数据,外网才有可能发送数据给内网主机

内网发送到外网的数据包会被修改源地址,外网发送给内网的数据包会被修改目的地址

内网穿透所使用的也就是这个原理,不停的让内网pc通过某个端口与服务器通信,服务器就可以一直保持与内网的通信

在数据包内NAT转换后,网关会建立一个NAT的映射表中间存储的相关的请求源地址和目的地址和端口等,当数据包回来时可以根据依次修改目的地址

实际应用:数据包伪装、平衡负载、端口转发和透明代理。

数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。

端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。

负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。

失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。

透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。

NAT参考地址