面向P2P通信的UDP H的ole Punching技术研究与实现.docVIP

面向P2P通信的UDP H的ole Punching技术研究与实现.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向P2P通信的UDP H的ole Punching技术研究与实现

面向P2P通信的UDP Hole Punching技术研究与实现 摘 要 NAT(Network Address Translation),即网络地址转换,一定程度上解决了IPv4网络地址匮乏的问题,但也给面向P2P通信的应用程序以及协议造成通信方面的障碍。本文介绍了网络地址转换的基本原理以及其对P2P通信方式造成的冲击,简单概括目前主要的NAT穿透(NAT Traversal)技术,着重分析了UDP Hole Punching的穿透过程,最后给出一个轻量级的实现。 关键词 P2P;NAT 穿透;UDP Hole Punching1 引言 随着Internet技术的迅猛发展,公网地址变的越来越珍贵,每台计算机都分配一个公网地址显得不切实际。NAT(Network Address Translation)标准出现,一定程度上解决了公网地址紧缺的问题。它是一种把内部私有网络地址翻译成合法网络地址的技术。它允许内部节点在内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,通过具有NAT功能(通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中)的设备、软件(统称NATs-Network Address Translator)将内部地址替换成公网地址,从而在外部公网上正常使用。NAT根据其转换方式,主要有三种类型:静态NAT、动态地址NAT、网络地址端口转换NAPT。其中静态NAT把内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上,该地址映射会在NAT设备上保持一定的时间,NAPT是最常见的NAT类型,因为它允许私有网络后的主机共享一个公用IP地址,有效的节省了费用。无论是哪种NAT类型,从传输层观察,当内部节点向外部网络发送数据包时,NAT设备都是将数据包中的内部网络IP地址与端口(称作“端点地址”)替换为外部合法的端点地址,反之亦然。 NAT的特质屏蔽了内部网络,所有内部网计算机对于外部网络来说都是不可见的。在C/S 的应用模型中,服务器位于公网中,客户端位于公网或NAT设备后的私有网络,客户端只是主动的与服务器通信,客户端之间并不需要通信,所以NAT在C/S 的应用模型中并不构成问题。但是,面向P2P通信(这里的P2P通信不单单指的是P2P应用程序,任何需要在通信双方“直接互连”的地方,都可称之为P2P通信)的应用系统中,特别的,当需要通信的双方位于NAT设备后的不同私有网络中,任何一方相对与另一方来说都是不可见的,这样造成双方无法建立直接的相互可达的通信连接。 目前,解决这种由于NAT存在造成的通信障碍的主要技术有:UPnP(Universal Plug and Play)、STUN(Simple Traversal of UDP over NATs)以及UDP/TCP Hole Punching等。其中,UDP/TCP Hole Punching技术有效的保持了NAT网络环境的透明性,它不需要了解网络的拓扑信息以及其它特别的软件环境的支持,可以被普通的应用程序实现。实验表明,82%的NAT网络环境支持UDP Hole Punching技术,虽然其引入了冗余的消息传递以及延时,但不失为一个优秀的NAT穿透解决方案。2 UDP Hole Punching技术研究 UDP Hole Punching的主要思想是:利用一个任何客户端都可达的服务器,在服务器上事先存储、维护客户端的UDP公用端点地址,当双方需要通信时,可以通过服务器的“介绍”获取对方的端点地址,建立“直接”的连接。 图1是一个具有NAT设备的简单网络拓扑图,其中C1,C2位于不同的私有网络中,无法直接通信,但都可以访问Server。下面分析UDP Hole Punching的基本流程: (1)C1向服务器发出请求,要求与C2建立连接。 (2)服务器向C1,C2发送对方的公用端点地址,公用端点地址是服务器根据C1,C2发送的UDP数据报的源端点地址“观察”到的,即NAT设备“翻译”后的端点地址。 (3)C2接收到C1 的端点地址后,考虑到其所处网络的NAT设备可能具有防火墙功能,利用C1的端点地址作为目的地址,发送“穿洞”UDP数据报,该数据报使得C2网络的NAT设备允许后续的以C1端点地址为源地址的UDP数据报进入其内部网络,像是在NAT设备的防火墙上“穿洞”,对以C1端点地址为源地址的UDP数据报开放“入口”。 (4)C1接收到C2 的端点地址后,以C2的端点地址为目的地址发送“探测”UDP数据报,同样该数据报也使得C1网络的NAT设备上形成“穿洞”。 (5)C2收到C1的“探测”数

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档