NAT技术详解
Posted 两片空白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NAT技术详解相关的知识,希望对你有一定的参考价值。
前言
我们知道现在流行的IPv4的IP地址是32位的。那说明IP地址总数是2^32次方个。但是随着互联网的发展,现在的入网设备早就超过了2^32次方个了。拿为什么我们现在的主机IP还够用呢?
这里用到了NAT技术来解决。
一.NAT技术概念
在博客网络层IP协议,有介绍到,我们的的IP分为两大类,私网IP地址和公网IP地址。
- 当主机跨网络通信时,NAT技术可以将报文的目的IP地址转换为路由器的WAN口IP地址。也就是可以将私有IP和公有IP转化的过程。
- 公网IP是唯一的,使用NAT技术后,可以使得不同局域网内的主机的IP地址可以一样。但是同一局域网内的主机IP地址不能一样。
二.IP地址转化过程
那么这里会有一个问题:由于主机A的IP地址已经被替换,服务器要响应数据给主机A时,怎么发送回去呢?
在NAT路由器内部会自动生成一张地址转换表。保存了被替换的目的IP地址和替换的IP的映射关系,可以找回上一次被替换的IP地址。
在客户端发送数据给服务器时建表,在服务器响应客户端时查表。
这种映射关系是由NAT路由器自动维护的,例如在TCP建立连接时,就会生成这个表,在断开连接后,会删除这个表。
三.地址转换表分类
3.1 静态NAT
一个路由器只有一个WAN口IP地址,当一个主机A通信时,经过该路由器,源IP地址被替换成了WAN口IP地址,此时,这个在路由器中生成一张转换表,保存了主机A数据源IP地址和路由器WAN口IP地址的映射关系。此时是一对一的关系,如果另外一主机B也要通过这个路由器通信时,由于WAN口IP地址已经被占用,需要等待主机A通信完。
3.2 动态NAT
路由器中有一个外网IP池,里面有多个未使用的IP地址。
当一个主机A通信时,经过该路由器,路由器会在外网IP池中,去出一个IP地址,替换数据IP报文的源IP地址,然后在转换表中建立,源IP地址和外网IP池使用的地址。其它主机来通信时,也会在外网IP池中,取出一个IP地址,进行替换,建立映射关系,直到使用完。这是一种多对多的关系。
3.3 NAPT端口多路复用方式
我们发现静态NAT在一个主机占用路由器的WAN口IP地址后,其它主机都需要等待主机通信完,效率很低。而动态NAT,需要有足够的IP地址。
NAPT采用端口多路复用方式。使用IP+port来建立映射关系。因为IP+port是唯一的。
当多台主机经过一个路由器对外通讯时,路由器的WAN口IP地址不变,只需要改变端口号就可以了。
在实际生活中,NAPT技术是用得最多的。
在转换表中,源IP地址和替换后的IP地址是互相为Key值的,当主机发送数据给服务器,可以通过源IP地址查要替换的IP地址,服务器响应主机,可以通过目的IP地址查要发送的主机地址。
四.NAT技术的缺陷
- 无法从NAT外部向内部主机建立连接。
由于转换表的建立需要私网向公网发送数据时建立的,当公网服务器想和私网主机建立连接,由于路由器没有转换表,找不到要建立连接的主机。
所以两不同局域网主机,不经过公网不能通讯。
- 转换表的生成和销毁需要额外开销
- 通讯过程中一旦NAT设备异常,即使存在热备,所有TCP连接也会断开,找不到连接的主机和服务器了。
NAT穿越:为了避免NAT设备故障,转换表不存在,导致连接断开。网络协议的设计者们想让NAT设备自动可以建立转换表,而不需要主机建立连接时触发。
比如:在NAT设备上装载一个软件,不断检测局域网主机的某个端口号是否存在,存在的话,就建立转换表。
但是很遗憾的是,现在解决的每一种方法都不完美,还需要在内部主机、应用程序或者NAT网关上增加额外的处理。
五.NAT设备和代理服务器
路由器往往具备NAT技术,在网络通信过程中,路由器对数据起到了中转的作用,完成了主机和其它局域网主机的通信。
代理服务器将客户端发来的请求转化给服务器,服务器返回结果后,代理服务器又将结果返回给客户端。
NAT设备的功能看起来和代理服务器的功能有点相似。但是它们有很大的区别。
- 从应用上来讲,NAT设备时网络基础设备之一,解决的时IP地址不足的问题,代理服务器根贴近于具体应用。
- 从底层实现上。NAT工作在网络层,代理服务器工作在应用层。
- 从使用上,NAT一般工作在局域网的出口,代理服务器可以工作在局域网,也可以工作在广域网。也可以跨网。
- 从部署上,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器是一款软件,部署在服务器上。
代理服务器是一种应用比较广泛的应用:可以用来翻墙(广域网中的代理),负载均衡(局域网中的代理)
代理服务器由分为:
- 正向代理:主机要求代理服务器向目的服务器要某种资源。
- 反向代理:主机向代理服务器要某种资源。主机不关心资源时从哪台服务器来的,当代理服务器检测到该资源请求很多,会向目标服务器请求大量该资源,缓存再代理服务器中。
用途:
- 正向代理用于请求的转发。
- 反向代理往往用作一个缓存。
以上是关于NAT技术详解的主要内容,如果未能解决你的问题,请参考以下文章
P2P技术详解:P2P中的NAT穿越(打洞)方案详解(进阶分析篇)
P2P技术详解:P2P中的NAT穿越(打洞)方案详解(进阶分析篇)