The IP Network Address TranslatorIP网络地址转换是人们说的NAT,或者说NA(P)TNAT是为了解决IPv4地址不足而提出来得一种替代方案,可以对外界屏蔽内部的网络拓扑。随着网络的发展,NAT阻碍了构建在覆盖网络的P2P程序的发展。因为覆盖网络是构建在应用层,屏蔽了传输层以下的网络拓扑,网络中的每一个节点或某些节点有此网络的路由表,由这些路由表构建出这个覆盖网络,但是NAT阻碍的覆盖网络中节点的连接。
    
    
   
    
上图显示了NAT的原理。NAT将内网的IP替换为公网IP,将端口映射为公网的端口。公网IP替换内网IP是固定的,NAT的不足之处在于端口的替换。因为NAT还没有形成标准,替换策略有几种,这也是NAT行为的关键。

     在《Behavior and Classification of NAT Devices and Implications for NAT Traversal》一文中就把端口映射的行为分成四种,其中包括保留端口,不保留端口,端口重载,端口复用。这四种分类最终区分了NAT的四种类型即Full cone NATSymmetric NATPort-Restrictes cone NAT Address-Restriced cone NAT

     为了使覆盖网络中的节点相互通信,我们需要进行NAT穿越。在《A NAT Traversal Mechanism for Peer-To-Peer Networks》一文种介绍了根据两端不同的NAT类型对应的四种NAT穿越方案。如下图
     
     

    这些解决方案都需要STUNSimple Traversal of User Datagram Protocol through Network Address Translators (NATs)NATUDP简单穿越)协议帮助。STUN协议要求一台具有公网IP的主机帮助一台主机进行NAT类型的判断。
    

      上图是STUN协议的流程,其主要的思想是通过STUN的回射来判断主机的NAT类型。

     除了直接连接,反向连接、打洞和依赖都需要第三台主机的帮助。

     在《Characterization and Measurement of TCP Traversal through NATs and Firewalls》一文中介绍了TCP穿越的方法。在STUNT#2方法中,第三台主机和两台需要连接的主机都有长连接,当一方需要发起来连接时,向第三台主机发请求,第三台主机向被请求的主机发送邀请,此时需要连接的主机都向对方发送SYN包,此时双方的防火墙都有了洞,只要有一方的SYN包到达对方主机,连接就会被建立。Relay方法需要耗费的代价太大,在P2P应用中一般会消极的处理双方都是对称NAT的情况。






 

posted on 2011-07-15 20:35 Range 阅读(1807) 评论(2)  编辑 收藏 引用
评论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计