NAT(网络地址转换)

NAT(网络地址转换)

NAT(Network Address Translation)网络地址转换

NAT

  1. 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;
  2. 网络访问只能先由私网侧发起,公网无法主动访问私网主机;
  3. NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;
  4. NAT网关的存在对通信双方是保持透明的;
  5. NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

4种典型NAT类型

按照NAT设备在进行地址映射时行为的不同,NAT可以分为以下四种:

1.Full-cone NAT, also known as one-to-one NAT 全锥形NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机都能通过给eAddr:port2发包到达iAddr:port1

2.Address-restricted-cone NAT 限制锥形NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机(hostAddr:any)都能通过给eAddr:port2发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:any. "any"也就是说端口不受限制(其实就是内部必须发送过包的IP地址,才能向这个eAddr:port2发送包

3.Port-restricted cone NAT 端口限制锥形NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。一个外部主机(hostAddr:port3)能够发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:port3.(在上一条的基础上增加了发送过包的IP地址+端口)

4.Symmetric NAT 对称型NAT

来自相同内部ip和port发送到相同目的地ip和port的请求被映射到唯一的外部ip和port地址;如果相同的内部主机采用相同的ip和port地址发送到不同的目的地,那么重新分配映射地址
只有先前收到内部主机发送的包的外部主机才能够发送返回包到内部主机。

各种网络环境下的P2P通信解决方法:

  1. 双方在一个局域网内,直接通过内网地址通信;
  2. 双方都有公网地址,直接通过公网地址通信;
  3. 一方有公网地址,一方在NAT后,由NAT后的一方主动发起通信;
  4. 如果通信双方都位于NAT后面,且双方的NAT类型都是cone NAT,那么可以通过一个STUN服务器发现自己的NAT类型以及内网和外网传输地址映射信息,然后通过Signaling(信令服务器,实现了SIP协议的主机)交换彼此的NAT类型及内网和外网传输地址映射信息,然后通过UDP打洞的方式建立通信连接;
  5. 如果通信双方有一方的NAT类型是Symmetric NAT,则无法直接建立P2P连接,这个时候就需要借助TURN(Traversal Using Relay NAT)即转发服务器来实现间接通信;
posted @ 2019-07-30 17:20  xcantaloupe  阅读(1184)  评论(0编辑  收藏  举报