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一般集成在防火墙,路由器等硬件设备上,代理服务器是一款软件,部署在服务器上。

代理服务器是一种应用比较广泛的应用:可以用来翻墙(广域网中的代理),负载均衡(局域网中的代理)

代理服务器由分为:

  • 正向代理:主机要求代理服务器向目的服务器要某种资源。
  • 反向代理:主机向代理服务器要某种资源。主机不关心资源时从哪台服务器来的,当代理服务器检测到该资源请求很多,会向目标服务器请求大量该资源,缓存再代理服务器中。

用途:

  • 正向代理用于请求的转发。
  • 反向代理往往用作一个缓存。

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值