一种p2p网络应用系统中私网检测与穿越的复合方法

文档序号:7754571阅读:328来源:国知局
专利名称:一种p2p网络应用系统中私网检测与穿越的复合方法
技术领域
本发明属于大规模网络应用技术领域,涉及一种P2P网络应用系统中私网检测与穿越的复合方法。
背景技术
P2P (Peer-to-Peer,点对点)技术在许多网络应用系统(如视频直播,视频点播, 文件下载,网络安全等)中占有重要的地位。提高P2P系统性能的前提是系统节点之间的互联互通能力。现实网络的特性决定了 NAT检测方法和穿越方法在P2P系统中的重要性。 传统的网络检测与穿越方法一般都针对某一特定的应用提供针对性的解决方法,但是随着网络复杂性的增加以及P2P系统对于私网联通性指标的高要求,需要设计与研究高精度和高概率的NAT (Network AddressTranslation,网络地址转换)检测与穿越方法。目前常用的NAT检测方法主要有UPNP (Universal Plug and Play) ,TURN(Traversal Using Relay NAT,通过 Relay 方式穿越 NAT)、STUN (SimpleTraversal of UDP over NATs,NAT 的UDP简单穿越)等。UPNP利用最内层网关与节点机器之间的通信协议为每个内网节点的应用提供外部映射端口,从而实现了内部节点被外部节点访问的功能,提高了系统的连通性。 但是对于有多层网关的网络,该技术则无能为力。同时,其虽支持TCP协议,但对于UDP等其他常用传输协议的支持能力低下。STUN通过外部特定服务器的通信来测试内网节点与公网节点之间的网络地址映射,如图1所示。这个方法对于隐藏在对称NAT后面的网络节点无法提供稳定的内外网地址映射。TURN技术是利用特定公网服务器的中转服务来实现的,如图2 所示,它完全解决了多层网络嵌套的问题,但是完全利用中间服务器转发数据使得中间服务器成为系统的性能瓶颈及单点单点障碍,很难实现系统对大传输量的支持。

发明内容
本发明所要解决的技术问题是提供一种P2P网络应用系统中私网检测与穿越的
复合方法。为解决上述技术问题,本发明采用如下技术方案。一种P2P网络应用系统中私网检测与穿越的复合方法包括以下步骤步骤一,对UPNP、STUN、TURN三种方法设定不同的优先级,优先级顺序为UPNP、 STUN、TURN ;然后对节点所处网络进行检测并加以分类;步骤二,如果检测结果显示节点所处的网络环境能够通过UPNP技术实现对外部节点的开放,则利用UPNP技术实现所述网络内部节点的NAT穿越;否则执行步骤三;步骤三,如果检测结果显示节点所处的网络环境支持STUN技术,则利用STUN技术实现节点的私网穿越;否则执行步骤四;步骤四,如果检测结果显示节点所处的网络环境支持TURN技术,则采用TURN技术实现节点的私网穿越。作为本发明的一种优选方案,所述节点为客户节点A,所述步骤二的详细过程为
客户节点A检查当前网关是否支持UPNP技术,如果支持,则申请UPNP外网端口, 并通过所述外网端口向全局路由服务器B发送加入网络的申请;全局路由服务器B对客户节点A发起连接,并发送握手协议;如果握手成功,说明客户节点A处于有效的UPNP网关后面,客户节点A发送数据的往里地址被全局路由服务器 B记录,并认定所述往里地址为客户节点A的外部映射地址;其他系统节点通过全局路由服务器B获取所述客户节点A的外部映射地址,然后主动与客户节点A通信;如果客户节点A检测不到有效的UPNP端口,或者申请到了端口,但没有通过所述步骤2的检测,则执行步骤三。作为本发明的另一种优选方案,所述步骤三的详细过程为全局路由服务器B向架设在公网上的STUN服务器发送UDP数据包,STUN服务器接收到所述UDP数据包后提取全局路由服务器B的外出网络地址,STUN服务器利用新的端口向所述全局路由服务器B的外出网络地址发送数据;如果全局路由服务器B接收到STUN服务器发送的UDP数据包,则所述外出网络地址是全局路由服务器B的支持UDP协议的外部映射,其他节点可以通过所述外出网络地址采用UDP协议向全局路由服务器B主动发起通信。作为本发明的再一种优选方案,所述步骤四的详细过程为全局路由服务器B首先发送消息到TURN服务器,TURN服务器为该连接建立一个外部映射地址;所有从外部发向所述外部映射地址的UDP数据包都被STUN服务器通过与全局路由服务器B之间的内部链接通道发送给全局路由服务器B,从而实现了全局路由服务器B对外部节点的开放。本发明的有益效果在于本发明所述方法通过有效的优先级设定,充分利用了 UPNP、TURN、STUN各自的优点,避免它们的缺点,使得该复合的私网穿越方法成为一个合理、 高效、高通过率的私网穿越方法,较单一的私网穿越方法有更好的适应性和穿越率,提高了 P2P系统的数据共享效率,为大规模大容量的P2P应用系统提供了技术保证。


图1为STUN技术实现示意图;图2为SURN技术实现示意图;图3为本发明所述的私网检测与穿越的复合方法的流程图。
具体实施例方式下面结合附图对本发明的具体实施方式
作进一步详细说明。本发明的目的在于设计一套复合的实现百分之百通过率的NAT网络技术检测与穿越方法,该方法能融合UPNP、STUN、TURN三种NAT检测方法,通过对网络环境的检测动态的采用相应的穿越方案。实施例一本发明所述方法包括以下步骤1、对三种方法设定不同的优先级,优先级顺序为UPNP、STUN、TURN。2、对节点所处网络进行检测并加以分类,如果检测结果显示该节点所处的网络环境可以通过UPNP技术实现对外部节点的开放,则利用UPNP技术实现该网络内部节点的NAT穿越。
3、对于不能支持UPNP方法的节点,利用STUN机制检测该节点在STUN环境下的穿越问题;如果该节点所处的网络环境能够满足STUN技术的要求,则利用STUN技术实现该节的私网穿越。4、对于以上方法都不能实现的网络节点,则采用TURN的方法实现私网穿越。实施例二本实施例提供一种P2P网络应用系统中私网检测与穿越的复合方法,如图3所示, 该方法的详细步骤为 步骤1,客户节点A检查当前网关是否支持UPNP技术,如果支持,则申请UPNP外网端口,并通过该端口向全局路由服务器B发送加入网络的申请。步骤2,全局路由服务器B对客户节点A发起连接,并发送握手协议;如果握手成功,说明客户节点A处于有效的UPNP网关后面,客户节点A发送数据的往里地址被全局路由服务器B记录,并认定所述往里地址为客户节点A的外部映射地址;其他系统节点通过全局路由服务器B获取所述客户节点A的外部地映射址后可以主动与客户节点A通信。步骤3,如果客户节点A检测不到有效的UPNP端口,或者申请到了端口,但没有通过步骤2的检测,则执行步骤4。步骤4,全局路由服务器B向架设在公网上的STUN服务器发送UDP数据包,STUN服务器接收到所述UDP数据包后提取全局路由服务器B的外出网络地址,STUN服务器可以利用新的端口向所述全局路由服务器B的外出网络地址发送数据。如果全局路由服务器B接收到STUN服务器发送的UDP数据包,则所述外出网络地址是全局路由服务器B的支持UDP 协议的外部映射,其他节点可以通过所述外出网络地址采用UDP协议向全局路由服务器B 主动发起通信。步骤5,如果步骤2与步骤4的检测都失败了,则利用TURN技术进行私网穿越。全局路由服务器B首先发送消息到TURN服务器,TURN服务器为该连接建立一个外部映射地址。所有从外部发向所述外部映射地址的UDP数据包都被STUN服务器通过与全局路由服务器B之间的内部链接通道发送给全局路由服务器B,从而实现了全局路由服务器B对外部节点的开放。本发明是一种将几种方法的有机结合的复合的私网穿越方案,该方法比单一的私网穿越方法有更好的适应性和穿越率。TURN技术的设计保证了所有私网节点都可以通过该方法实现私网穿越,因此这是功能最强的私网穿越方法,但是它自身的缺点限制了它的规模容量。在复合方案中,只有其他技术解决不了的例子才被允许采用TURN技术,好钢用在刀刃上,避免了该技术的缺陷。本发明通过有效的优先级设定,充分利用了 UPNP、STUN、TURN各自的优点,避免了它们的缺点,使得该复合的私网穿越方法成为一个合理、高效、高通过率的私网穿越方法, 为大规模的P2P系统在复杂网络上的应用提供了有力的保证。这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其他形式、结构、布置、比例,以及用其他元件、 材料和部件来实现。
权利要求
1.一种P2P网络应用系统中私网检测与穿越的复合方法,其特征在于所述复合方法包括以下步骤步骤一,对UPNP、STUN、TURN三种方法设定不同的优先级,优先级顺序为UPNP、STUN、 TURN ;然后对节点所处网络进行检测并加以分类;步骤二,如果检测结果显示节点所处的网络环境能够通过UPNP技术实现对外部节点的开放,则利用UPNP技术实现所述网络内部节点的NAT穿越;否则执行步骤三;步骤三,如果检测结果显示节点所处的网络环境支持STUN技术,则利用STUN技术实现节点的私网穿越;否则执行步骤四;步骤四,如果检测结果显示节点所处的网络环境支持TURN技术,则采用TURN技术实现节点的私网穿越。
2.根据权利要求1所述的P2P网络应用系统中私网检测与穿越的复合方法,其特征在于,所述节点为客户节点A,所述步骤二的详细过程为客户节点A检查当前网关是否支持UPNP技术,如果支持,则申请UPNP外网端口,并通过所述外网端口向全局路由服务器B发送加入网络的申请;全局路由服务器B对客户节点A发起连接,并发送握手协议;如果握手成功,说明客户节点A处于有效的UPNP网关后面,客户节点A发送数据的往里地址被全局路由服务器B记录,并认定所述往里地址为客户节点A的外部映射地址;其他系统节点通过全局路由服务器B获取所述客户节点A的外部映射地址,然后主动与客户节点A通信;如果客户节点A检测不到有效的UPNP端口,或者申请到了端口,但没有通过所述步骤 2的检测,则执行步骤三。
3.根据权利要求2所述的P2P网络应用系统中私网检测与穿越的复合方法,其特征在于,所述步骤三的详细过程为全局路由服务器B向架设在公网上的STUN服务器发送UDP数据包,STUN服务器接收到所述UDP数据包后提取全局路由服务器B的外出网络地址,STUN服务器利用新的端口向所述全局路由服务器B的外出网络地址发送数据;如果全局路由服务器B接收到STUN服务器发送的UDP数据包,则所述外出网络地址是全局路由服务器B的支持UDP协议的外部映射,其他节点可以通过所述外出网络地址采用 UDP协议向全局路由服务器B主动发起通信。
4.根据权利要求3所述的P2P网络应用系统中私网检测与穿越的复合方法,其特征在于,所述步骤四的详细过程为全局路由服务器B首先发送消息到TURN服务器,TURN服务器为该连接建立一个外部映射地址;所有从外部发向所述外部映射地址的UDP数据包都被STUN服务器通过与全局路由服务器B之间的内部链接通道发送给全局路由服务器B,从而实现了全局路由服务器B对外部节点的开放。
全文摘要
本发明公开了一种P2P网络应用系统中私网检测与穿越的复合方法,包括以下步骤步骤一,对UPNP、STUN、TURN三种方法设定不同的优先级,优先级顺序为UPNP、STUN、TURN;然后对节点所处网络进行检测并加以分类;步骤二,如果检测结果显示节点所处的网络环境能够通过UPNP技术实现对外部节点的开放,则利用UPNP技术实现所述网络内部节点的NAT穿越;否则执行步骤三;步骤三,如果网络环境支持STUN技术,则利用STUN技术实现节点的私网穿越;否则执行步骤四;步骤四,如果网络环境支持TURN技术,则采用TURN技术实现节点的私网穿越。本发明所述方法比单一的私网穿越方法有更好的适应性和穿越率,提高了P2P系统的数据共享效率,为大规模大容量的P2P应用系统提供了技术保证。
文档编号H04L29/08GK102340520SQ20101023128
公开日2012年2月1日 申请日期2010年7月20日 优先权日2010年7月20日
发明者吴言华 申请人:上海未来宽带技术及应用工程研究中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1