对NAT协议的理解

NAT 转换的三种方式
静态转换:1对1
动态转换:内部的IP地址随机转化为外部的Ip地址
端口多路复用:(端口地址转换PAT)内部网络的所用主机均可共享一个合法的IP地址并且实现Internet的访问!
               通过维护NAT表。防止内部网络被攻击。
NAT的分类
功能分类
地址转换方式:
1,端口号不变(StaticNat 和 PooledNAT)该类NAT的主要目的是实现地址扩展,是企业网和校园网常用的NAT类型。
2. 网络地址端口和转换:地址端口转换NAPT(Port-Level NAT)该类NAT的主要目的是实现地址扩展,是企业网和校园网常用的NAT类型。
NAT实现的分类
STUN协议把NAT分为如下几类
1.完全锥形NAT(Full Cone)NAT为其建立一个私有<IP:端口>地址和公有<IP:端口>地址之间的绑定,
  然后该主机地址至外网的任意会话将重用这个公有<IP:端口>地址
2.受限制锥形NAT:可以理解为受限制锥形是对外部主机的IP地址进行限制。
3.端口受限制锥形:可以理解为对外部主机的IP地址和端口同时进行了限制
4.对称类型(Symmetric) 该类型的限制最为严格。对称类型NAT会为内部主机向外部主机的
                      每一个会话(Session)建立全新的端口映射,即源地址和端口加上
     目的地址端口其中任意一个有变化,则映射关系也会不同。
STUN(Simple Traversal of UDP over NATs)协议:它允许位于NAT(或多重NAT)
                    后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为
                    某一 个本地端口所绑定的Internet端端口。
UDP Hole Punching UDP穿越NAT技术:利用STUN服务器上事先维护的客户端UDP映射地址,当双方需要通信时,
                  可以通过服务器的配合获取对方的地址和端口,建立P2P直连,如图6所示。
下面是UDP Hole Punching技术步骤。
1.客户端A向STUN服务器发出请求,要求与客户端B建立连接。
2.服务器向客户端A,B发送对方的NAT映射地址,即外部地址。
   这个地址是服务器根据两个客户端发送的UDP数据报负载中获得。
3.客户端B接收到A的外部地址后,将A的外部地址作为目的地址发送Hole Punching UDP数据报,
   该数据报使得B端网络的NAT设备允许后续的以A端地址为源地址的UDP数据报进入其内部网络。
   可以形象的称该过程为“打洞”过程,即B向A打了一个“洞”作为通道。
4.客户端A接收到B的外部地址后,以B的外部地址为目的地址发送探测UDP数据报,
   同样该数据报也在A端网络的NAT设备上建立对应映射。
5.B端收到A端的探测数据报后,向A端发送确认数据报。至此,双方建立互通的UDP连接。
   采用UDP Hole Punching技术,STUN可以穿越非Symmetric NAT却无法穿越存在Symmetric NAT的网络环境,
   它没有对Symmetric NAT存在的情况进行细分,当通信双方有一方是Symmetric NAT的情况也是可以建立连接的
   只要没有部署Symmetric NAT的一方首先给对方“打洞”,然后就可以在部署了Symmetric NAT一方的尝试连接数据包的
   负载中得到对方NAT分配的新地址和端口,以此地址和端口为目的来建立P2P直连就可以。
   当双方均部署了Symmetric NAT,UDP Hole Punching技术则无法成功穿越NAT。
   原因就是Symmetric NAT会为每一个不同的目的地址的Session建立不同的映射,
   所以,当一方向对端映射地址“打洞”的时候,自己的NAT已经建立了不同于STUN服务器所获得的映射端口,
   而另一方在“打洞”的时候,仍然发送数据包到原来的映射因此数据包根本无法通过第一方的NAT,
   这样就无法建立直接连接。一方是Symmetric NAT,一方是端口受限NAT也是同样道理。
   我们无法知道Symmetric NAT上为其新会话建立的新映射地址和端口,
   而由这个新地址和端口发出的“打洞”消息又因为对方是端口受限而无法穿越对称NAT,

   所以无论哪一方来“打洞”数据包都会因为目的端的NAT映射不匹配而不能通过,连接建立失败。

以上是我看了一天RFC文档,对NAT的一些浅显的理解。其实NAT很复杂,对多点之间通信我简直头晕,五一回去好好看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值