NAT网络地址转换简介

概述


NAT(Network address translation),网络地址转换,是指在数据通过路由设备传输时,通过修改ip报文头部中网络地址信息,把一个ip地址重定向为另一个ip地址。

当一个网络迁移时,需要为每台主机重新分配ip地址,但使用了NAT后,就不需要了。各个主机可以仍然保持原有ip地址不变,改变的工作已经由NAT完成了。

NAT的使用还可以避免Ipv4地址分配消耗怠尽的问题。一个私有网络中的所有主机可以只使用一个具有公网ip地址网关设备。

装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,只要在NAT路由器上将其本地地址转换成全球IP地址,就能和因特网连接。

NAT技术具有如下两个功能:

  • 宽带分享,一个私有网络的若干主机共享一个宽带与Internet连接
  • 安全防护,私有网络中的主机与外界通信时,使用的是NAT后的公网ip地址,外界网络并不知悉该通信主机的真实地址,在一定程序上保护了主机的安全

原理及应用


借助于NAT,私有地址的内部网络通过路由器发送数据时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。

NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。

类似于代理,NAT部署在主机(192.168.0.2)与Internet之间。主机与Internet的通信由以下三步骤完成:

  1. 主机发送数据到NAT,此时ip数据包中源ip为192.168.0.2
  2. NAT接收到数据后,把源ip修改为自己的ip(此ip为公网ip)发送出去,同时在内部维护一个列表,记录此数据是从192.168.0.2发送过来的
  3. 对方响应的数据由NAT接收,接收后它根据记录的列表,把目的ip地址从自己修改为192.168.0.2,最后把数据转发给真实主机,通信完成
基本NAT

client与server通信时,NAT仅仅转换源ip地址,不对port作变动。

如私有主机192.168.0.2:4000与公网6.7.8.9:80通信时,NAT把主机地址转换为公网ip:1.2.3.4:4000,仍使用原端口。

这样会导致一个问题:当私有主机192.168.0.3:4000与外部通信时,NAT主机可能就无法区分是哪个主机发送的数据了。

NAPT(Network Address/Port Translators)

NAPT的特点是会使用网关的 IP,但端口会选择一个和临时会话对应的临时端口。如:

  • 在客户机时 192.168.0.8:4000——6.7.8.9:8000
  • 在网关时 1.2.3.4:62000——6.7.8.9:8000

网关上建立保持了一个1.2.3.4:62000的会话,用于192.168.0.8:4000与6.7.8.9:8000之间的通信。

对于NAPT,又分了两个大的类型,差别在于,当两个内网用户同时与8000端口通信的处理方式不同。

  1. Symmetric NAT型 (对称型)

一个客户机与两个server通信时:

  • 在客户机时 192.168.0.8:4000——6.7.8.9:8000
    192.168.0.8:4000——6.7.8.10:8000

  • 在网关时,两个不同session的端口号不同
    1.2.3.4:62000——6.7.8.9:8000
    1.2.3.4:62001——6.7.8.10:8000

    1. Cone NAT型(圆锥型)
  • 在客户机时 192.168.0.8:4000——6.7.8.9:8000
    192.168.0.8:4000——6.7.8.10:8000

  • 在网关时,两个不同session但端口号相同
    1.2.3.4:62000——6.7.8.9:8000
    1.2.3.4:62000——6.7.8.10:8000

目前绝大多数属于这种。Cone NAT又分了3种类型:

  1. Full Cone NAT(完全圆锥型)
    从同一私网地址端口192.168.0.8:4000发至公网的所有请求都映射成同一个公网地址端口1.2.3.4:62000 ,192.168.0.8可以收到任意外部主机发到1.2.3.4:62000的数据报。

  2. Address Restricted Cone NAT (地址限制圆锥型)
    从同一私网地址端口192.168.0.8:4000发至公网的所有请求都映射成同一个公网地址端口1.2.3.4:62000,只有当内部主机192.168.0.8先给服务器C 6.7.8.9发送一个数据报后,192.168.0.8才能收到6.7.8.9发送到1.2.3.4:62000的数据报。

  3. Port Restricted Cone NAT(端口限制圆锥型)
    从同一私网地址端口192.168.0.8:4000发至公网的所有请求都映射成同一个公网地址端口1.2.3.4:62000,只有当内部主机192.168.0.8先向外部主机地址端口6.7.8.9:8000发送一个数据报后,192.168.0.8才能收到6.7.8.9:8000发送到1.2.3.4:62000的数据报。

总结


在不同的应用场景中,使用不同的NAT技术。

当前使用较多的是NAPT,即同时转换网络地址和端口。

在开发代理的时候,使用NAT可以把接收的数据重定向到应用层处理。应用层处理完毕后通过逆NAT再转换成真实ip和port地址发送出去。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值