面向P2P通信的UDP Hole Punching技术研究与实现_第1页
面向P2P通信的UDP Hole Punching技术研究与实现_第2页
面向P2P通信的UDP Hole Punching技术研究与实现_第3页
面向P2P通信的UDP Hole Punching技术研究与实现_第4页
面向P2P通信的UDP Hole Punching技术研究与实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向P2P通信的UDP Hole Punching技术研究与实现摘要NAT(NetrkAddressTranslatin),即网络地址转换,一定程度上解决了IPv4网络地址匮乏的问题,但也给面向P2P通信的应用程序以及协议造成通信方面的障碍。本文介绍了网络地址转换的根本原理以及其对P2P通信方式造成的冲击,简单概括目前主要的NAT穿透NATTraversal技术,着重分析了UDPHlePunhing的穿透过程,最后给出一个轻量级的实现。关键词P2P;NAT穿透;UDPHlePunhing1引言随着Internet技术的迅猛开展,公网地址变的越来越珍贵,每台计算机都分配一个公网地址显得不实在际。

2、NATNetrkAddressTranslatin标准出现,一定程度上解决了公网地址紧缺的问题。它是一种把内部私有网络地址翻译成合法网络地址的技术。它允许内部节点在内部网络中使用内部地址,而当内部节点要与外部网络进展通讯时,通过具有NAT功能(通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中)的设备、软件统称NATsNetrkAddressTranslatr将内部地址交换成公网地址,从而在外部公网上正常使用。NAT根据其转换方式,主要有三种类型:静态NAT、动态地址NAT、网络地址端口转换NAPT。其中静态NAT把内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而

3、动态地址NAT那么是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上,该地址映射会在NAT设备上保持一定的时间,NAPT是最常见的NAT类型,因为它允许私有网络后的主机共享一个公用IP地址,有效的节省了费用。无论是哪种NAT类型,从传输层观察,当内部节点向外部网络发送数据包时,NAT设备都是将数据包中的内部网络IP地址与端口称作“端点地址交换为外部合法的端点地址,反之亦然。NAT的特质屏蔽了内部网络,所有内部网计算机对于外部网络来说都是不可见的。在/S的应用模型中,效劳器位于公网中,客户端位于公网或NAT设备后的

4、私有网络,客户端只是主动的与效劳器通信,客户端之间并不需要通信,所以NAT在/S的应用模型中并不构成问题。但是,面向P2P通信这里的P2P通信不单单指的是P2P应用程序,任何需要在通信双方“直接互连的地方,都可称之为P2P通信的应用系统中,特别的,当需要通信的双方位于NAT设备后的不同私有网络中,任何一方相对与另一方来说都是不可见的,这样造成双方无法建立直接的互相可达的通信连接。目前,解决这种由于NAT存在造成的通信障碍的主要技术有:UPnPUniversalPlugandPlay、STUNSipleTraversalfUDPverNATs以及UDP/TPHlePunhing等。其中,UDP/

5、TPHlePunhing技术有效的保持了NAT网络环境的透明性,它不需要理解网络的拓扑信息以及其它特别的软件环境的支持,可以被普通的应用程序实现。实验说明,82的NAT网络环境支持UDPHlePunhing技术,虽然其引入了冗余的消息传递以及延时,但不失为一个优秀的NAT穿透解决方案。2UDPHlePunhing技术研究UDPHlePunhing的主要思想是:利用一个任何客户端都可达的效劳器,在效劳器上事先存储、维护客户端的UDP公用端点地址,当双方需要通信时,可以通过效劳器的“介绍获取对方的端点地址,建立“直接的连接。图1是一个具有NAT设备的简单网络拓扑图,其中1,2位于不同的私有网络中,

6、无法直接通信,但都可以访问Server。下面分析UDPHlePunhing的根本流程:11向效劳器发出恳求,要求与2建立连接。2效劳器向1,2发送对方的公用端点地址,公用端点地址是效劳器根据1,2发送的UDP数据报的源端点地址“观察到的,即NAT设备“翻译后的端点地址。32接收到1的端点地址后,考虑到其所处网络的NAT设备可能具有防火墙功能,利用1的端点地址作为目的地址,发送“穿洞UDP数据报,该数据报使得2网络的NAT设备允许后续的以1端点地址为源地址的UDP数据报进入其内部网络,像是在NAT设备的防火墙上“穿洞,对以1端点地址为源地址的UDP数据报开放“入口。41接收到2的端点地址后,以2

7、的端点地址为目的地址发送“探测UDP数据报,同样该数据报也使得1网络的NAT设备上形成“穿洞。52收到1的“探测数据报后,向1发送确认数据报。至此,双方建立互通的UDP连接。在(2)中,考虑到1、2可能处于同一个私有网络中,效劳器可以同时发送私有、公用端点地址,然后1、2先尝试使用对方私有端点地址进展通信,失败的情况下,再使用公用端点地址。图1需要指出的是,并不是任何的NAT设备都支持这上述的“穿透过程。一个“友好的NAT设备必须是“非对称的:客户端的私有端点地址被NAT设备“翻译成公用端点地址后,客户端再使用此私有端点地址向其它目的端点地址发送数据报,NAT设备并不会因为目的端点地址的改变而

8、改变映射的公用端点地址,否那么,1、2获取的对方端点地址因为“映射改变而失效。同时,对于复杂的具有多层NAT设备的网络环境,NAT设备也需提供“回环转换的功能:NAT设备接收来自内部网络的数据报,但是目的端点地址却是其原先“对外映射的公用端点地址,此时NAT设备仍可以“回环的把目的端点地址“翻译成内部网络端点地址,并把数据报转发回内部网络。3基于UDPHlePunhing的实现图2本文基于.Net框架开发一个轻量级的面向对象类库,完好的实现UDPHlePunhing的穿透过程。图2是类库灰底框分层构造,描绘了类库边界以及体系构造。其中NATlient/ServerAPI层是类库对外提供的效劳器

9、与客户端的编程接口;NATTraversalLayer是整个类库的核心,处理UDPHlePunhing过程中的各种情境,建立客户端之间“直接连接等;AsynhrnusUDPSket是基于UDP的异步收发套接字,为上下层收发数据。图3是整个实现的局部类图限于篇幅省略了方法与属性。下面是局部类功能的简单描绘:1客户端:NATlient是客户端的用户接口,负责客户端的登陆、登出,向下层转发字节形式的用户数据,同时向上层传递接收到的用户数据;nnetinanager是整个客户端的核心,它是客户端多个UDP套接字的管理器,负责启动穿透过程,接收来自其它客户端、效劳器的各种消息以及作出相应响应。essag

10、eBufferQueue与QueueithTier是发送到其它客户端的用户数据缓存区,放入缓存区内的数据假如在一个很小的时间间隔内还没发送出去,将通知客户端发送失败。NATSessinanager与NATSessin负责管理其它客户端的端点地址(包括客户端的私有、公用端点地址);RegisterUtility具有向效劳器注册本地UDP套接字的功能,它能探测出客户端到效劳器之间NAT设备的端点地址映射保持时间长短,动态调整UDP套接字注册间隔,从而减少客户端、效劳器的负担。2效劳器:NATServer负责客户端消息的处理,比方注册消息,恳求客户端的端点地址,通知客户端准备接收来自其它客户端的用户

11、数据等;lientapTable与SketapIte存放、管理客户端注册的UDP套接字端点地址。3其它:根据UDPHlePunhing穿透过程中的各种情境,需要定义多种的消息类型,具有各自的消息负载格式,表1是各种消息类功能说明。图3表1RegRUnReg客户端向效劳器端发送的UDP套接字注册、取消注册消息。1SendUserData2RelayUserData1上层的用户数据消息。2中转消息:客户端之间无法“直接通信时,可以通过效劳器中转的用户数据消息。1RequsetEndPint2ReplyEndPint1客户端恳求效劳器提供客户端端点地址消息。2效劳器提供客户端端点地址消息。1Prbe

12、ReEiver2AKSenderPrbe1客户端探测目的客户端是否可达的消息;2目的客户端确认发起客户端探测可达消息。RequestTReeive效劳器要求客户端准备接收来自其它客户端用户数据消息。ReeiverPunhing客户端“穿洞消息。RedueRegisterSpan效劳器要求客户端减少UDP套接字的注册间隔时间。4完毕语现实的网络环境中,NAT是一个普遍存在现象,基于P2P通信的应用程序要求参与客户端的通信对等性,造成多数通信终端无法“直接的收发数据,因此NAT穿透是基于P2P通信的应用系统必须首要解决的问题。目前,由于NAT设备的多样性,还没有一种技术可以“完全有效解决NAT穿透过程中的各种问题,因此一个强健的基于P2P通信的系统,需要结合运用多种穿透方法,使得通信终端可以畅通无阻的进展“交流。参考文献1B.Frd,P.Srisuresh,D.Kegel.Peer-t-PeeruniatinArssNetrkAddressTranslatrs.USENIXAnnualTehnialnferene,April20222ZhuHu.NATTraversalTehnique

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论