一种建立对等直连通道的方法

文档序号:7622332阅读:215来源:国知局
专利名称:一种建立对等直连通道的方法
技术领域
本发明涉及计算机网络中节点的连接技术,特别是涉及一种建立对等连接(P2P,Peer to Peer)通道的方法。
背景技术
在网络中,两个节点之间的连接方式一般有两种一种是客户端/服务器方式的连接,客户端申请服务,服务器提供服务,通常这种连接方式是一对多的关系,如图1所示,一个服务器可以接收来自多个客户端的申请,并向多个客户端提供服务,两者之间的关系是非对等的关系;另一种是P2P方式,如图2所示,P2P方式的连接是指在计算机网络中的每两个节点直接连接,即每两个节点之间是对等连接的关系。
在客户端/服务器的方式下,由于服务器需要向多个客户端提供服务,所以,通常需要使用高性能的机器,成本一般比较大。P2P方式的通讯双方是对等的关系,两者互相为对方提供服务,所以,P2P方式的突出优势在于可以将众多性能不高的PC连接起来,以实现资源共享和通讯,这种连接方式大大降低了成本,逐渐成为网络发展的新方向。目前主要的应用有文件交换、分布式计算、协同工作、分布式搜索和电子商务等。
虽然P2P方式有如上所述的优势,但是其发展受到一定限制,这是因为,为了防范网络病毒的攻击,越来越多的计算机都位于网络地址转换器(Network Address Translator,NAT)的保护之内。NAT是在内部网络和公共网络之间起检查和转发作用的设备,通常集成在路由器上,NAT可能会修改内网中主机的IP地址和端口信息,所以它限制了网络上任意两台计算机之间的直接通讯,只有符合一定规则的通讯才被允许,所以,如何突破NAT的限制是实现P2P的重要内容。
NAT大致分为三种类型基本NAT(Basic NAT)、非对称NAT(ConeNAT)和对称NAT(Symmetric NAT)。
Basic NAT建立(私有IP地址,私有端口)和(公网IP地址,公网端口)之间的绑定关系,Basic NAT为绑定的端口执行地址翻译。
Cone NAT建立(私有IP地址,私有端口)和(公网IP地址,公网端口)之间的绑定关系,然后,对于来自同一私有IP和端口号的应用连接,将重复使用这个绑定的端口,只要有一个连接会话,这个绑定端口就会保持激活状态。
Cone NAT又分为几种子类型全部非对称NAT(Full Cone NAT)、受限非对称NAT(Restricted Cone NAT)和端口受限非对称NAT(Port-Restricted Cone NAT)。Full Cone NAT在给一个新的外部会话建立了一个公网/私有的端口绑定后,就可以通过这个公共端口从公网上的任何外部端点接收数据通讯了。Restricted Cone NAT在内部主机发送了一个或多个数据包给一个外部主机的IP地址后,才会接收这个外部IP地址的数据包。Port-Restricted Cone NAT在内部主机发送了一个或多个数据包给一个外部主机的IP地址和端口号后,才会接收这个外部IP地址和端口号的数据包。可见,Restricted Cone NAT和Port-Restricted Cone NAT可有效保护内部主机不接收未被请求的数据包。
Symmetric NAT在所有会话期间不会保持(私有IP,私有端口号)和(公网IP,公网端口号)的绑定关系不变,相反,它会为每个新会话重新分配一个新的公网端口或公网IP地址。
由于当前NAT的种类繁多,并且不同种类的NAT各有其自身规定的通讯方式,所以,在位于不同种类NAT中的两个节点之间建立P2P通道的时候,首先需要获得双方节点的NAT的类型,然后根据NAT的类型采用不同的通讯方式建立P2P通道。
下面介绍现有技术建立P2P通道的方法。
首先,当网络中某主机A需要与主机B建立P2P通道时,通常需要一台具有双IP的外部服务器确定自身所在网络的NAT类型,然后将NAT类型提交给服务器,同样,服务器也保存有主机B提交的NAT类型。主机A从服务器获取主机B所在网络的NAT类型,如果主机B位于公网,或其所在网络的NAT类型为Full Cone NAT,则主机A采用主动方式,如图3所示,主机A直接发送数据包至主机B,主机B返回应答数据包至主机A,从而建立P2P连接;否则,主机A采用被动方式,如图4所示,主机A通过服务器通知主机B先发送数据包给主机A,主机A返回应答数据包至主机B,从而建立P2P连接。
对于上述采取被动方式的情况,如果主机A位于公网,或其所在网络的NAT类型为Full Cone NAT,P2P连接可以成功建立。但是,如果主机A所在网络的NAT类型为Restricted Cone NAT、Port-Restricted Cone NAT和Symmetric NAT,由于这些类型的NAT将拒绝不请自来的数据包,甚至会将某IP地址和端口号在一段时间之内发来的数据包认作攻击包而全部丢弃,造成P2P连接的建立失败。由此可见,现有技术建立P2P通道的成功率低。

发明内容
本发明的主要目的在于提供一种建立P2P通道的方法,提高P2P通道建立的成功率。
本发明的目的是通过如下技术方案实现的一种建立对等直连通道的方法,包括A、服务器在接收到第一主机发来的同步请求后,同时向第一和第二主机发送至少包含对方地址信息的同步数据包;B、第一和第二主机在接收到同步数据包后,立即向对方发送用户数据报协议UDP数据包。
其中,步骤A之前进一步包括第一主机和第二主机登录服务器,服务器记录第一和第二主机的网络标识和地址信息。
其中,步骤A所述第一主机发来的同步请求至少包括第二主机的网络标识和地址信息。
其中,在步骤B中,第二主机在接收到同步数据包后,判断是否建立与第一主机的对等直连通道,如果是,则立即向第一主机发送UDP数据包;否则,退出本流程。
其中,步骤B之后进一步包括第一和第二主机在接收到对方发来的UDP数据包后,向对方返回应答数据包。
其中,所述地址信息包含公网网际协议IP地址和端口号、私网IP地址和端口号。
从上述技术方案可以看出,在本发明的方法中,两个主机同时向对方发送UDP数据包,那么在接收到对方发来的数据包时,由于已经向对方发送了数据包,NAT将接收到的数据包认作有效的数据包,则两个主机之间能够成功建立P2P通道。解决了现有技术中双方主机所在网络的NAT均为Restricted Cone NAT或Port-Restricted Cone NAT的情况下,由于这两种NAT拒绝不请自来的数据包所造成的无法成功建立P2P通道的问题。而且,在其中一方主机所在网络的NAT为变端口的Symmetric NAT,另一方主机所在网络的NAT为Restricted Cone NAT的情况下也可成功建立P2P连接。从而大大提高了P2P连接建立的成功率。


图1是网络中的主机以客户端/服务器方式连接的示意图;图2是网络中的主机以P2P方式连接的示意图;图3是现有技术的采用主动方式建立P2P通道的示意图;图4是现有技术的采用被动方式建立P2P通道的示意图;图5是本发明的采用同步方式建立P2P通道的示意图;图6是本发明的采用同步方式建立P2P通道的流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种采用同步方式建立P2P通道的方法,如图5所示,当主机A希望建立与主机B之间的P2P连接时,首先向服务器发送同步请求数据包,服务器在接收到到同步请求数据包后,同时向主机A和主机B发送包含双方网络信息的同步数据包,在主机A和主机B分别接收到同步数据包后,立即向对方发送用户数据报协议(UDP)数据包,并在接收到对方发来的UDP数据包后,分别向对方返回UDP应答数据包。
图6是本发明的采用同步方式建立P2P通道的流程图。从图6可见,该流程具体包括如下步骤步骤601主机A和主机B分别登录服务器,服务器记录主机A和主机B的公网IP地址和公网端口号、私网IP地址和私网端口号、网络标识;步骤602当主机A希望建立其与主机B之间的P2P连接时,向服务器发送同步请求数据包,该同步数据包至少包含主机A的私网IP地址和端口号、主机A的公网IP地址和端口号、主机B的网络标识;步骤603服务器接收到主机A发来的同步请求数据包后,同时向主机A和主机B发送同步数据包,发给主机A的同步数据包至少包含主机B的公网IP地址和端口号、主机B的私网IP地址和端口号,发给主机B的同步数据包至少包含主机A的公网IP地址和端口号、主机A的私网IP地址和端口号,然后分别执行步骤604和606;步骤604主机A在接收到服务器发来的同步数据包后,根据主机B的公网及私网的IP地址和端口号立即向主机B发送UDP数据包;步骤605主机A在接收到主机B发来的UDP数据包后,由于主机A已经发送了一个UDP数据包至主机B,因此主机B所在网络的NAT接受该数据包,主机A向主机B返回一个应答数据包,然后退出本流程;步骤606主机B在接收到服务器发来的同步数据包后,判断是否与主机A建立P2P连接,如果是,则执行步骤607,否则结束,P2P通道建立失败;步骤607主机B根据主机A的公网及私网的IP地址和端口号立即向主机A发送UDP数据包;步骤608主机B在接收到主机A发来的UDP数据包后,由于其已经发送了一个UDP数据包至主机A,因此主机A所在网络的NAT也接受该数据包,主机B向主机A返回一个应答数据包。
从而,完成了主机A和主机B之间的P2P通道的建立过程。
下面对于上述技术方案的效果进行分析。
对于主机A和主机B位于公网或Full Cone NAT的情况,本发明的采用同步方式建立P2P通道的方法可以成功建立P2P通道。
对于主机A位于Restricted Cone NAT、Port-Restricted Cone NAT或Symmetric NAT、主机B位于公网或Full Cone NAT的情况,只要在步骤608之前已经执行了步骤604,即主机A在接收到主机B发来的UDP数据包之前已经向主机B发送了UDP数据包,即可保证P2P通道能够成功建立。
对于主机A位于公网或Full Cone NAT、主机B位于Restricted ConeNAT、Port-Restricted Cone NAT或Symmetric NAT的情况,只要在步骤605之前已经执行了步骤607,即主机B在接收到主机A发来的UDP数据包之前已经向主机A发送了UDP数据包,即可保证P2P通道能够成功建立。
对于主机A位于Restricted Cone NAT或Port-Restricted Cone NAT、主机B位于Restricted Cone NAT或Port-Restricted Cone NAT的情况,只要在步骤605之前已经执行了步骤607,或者在步骤608之前已经执行了步骤604,即可保证P2P通道能够成功建立。
对于主机A和主机B中任一方位于Symmetric NAT的情况,采用本发明的方法理论上无法成功建立连接,但是以下两种情况除外
其一,如果一方位于变端口的Symmetric NAT、另一方位于RestrictedNAT,由于Symmetric NAT不改变发出数据包的源公网IP地址,因此对方的Restricted NAT可接受该数据包,从而双方可以建立P2P连接;其二,有的操作系统对于检测出的Symmetric NAT,可默认按Port-Restricted Cone NAT的方式来映射IP地址和端口号,例如Linux,这时双方可以建立P2P连接。
从以上分析可以看出,采用本发明的同步方式建立P2P连接至少可以解决现有技术中无法建立双方主机位于Restricted Cone NAT或Port-RestrictedCone NAT下时无法建立P2P通道的问题,只要确保双方主机在接收到对方的数据包时已经向对方发送过数据包即可,如图5所示,只要确保服务器发送同步数据包至主机A的时间加上主机A发送UDP数据包到主机B的时间大于服务器发送同步数据包至主机B的时间,在现实情况下,这个条件很容易满足,因此本发明能够在较多情况下成功建立P2P连接,从而提高了P2P连接建立的成功率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种建立对等直连通道的方法,其特征在于,包括A、服务器在接收到第一主机发来的同步请求后,同时向第一和第二主机发送至少包含对方地址信息的同步数据包;B、第一和第二主机在接收到同步数据包后,根据接收到的对方地址信息,立即向对方发送用户数据报协议UDP数据包。
2.根据权利要求1所述的方法,其特征在于,步骤A之前进一步包括第一主机和第二主机登录服务器,服务器分别记录第一和第二主机的网络标识和地址信息。
3.根据权利要求1所述的方法,其特征在于,步骤A所述第一主机发来的同步请求至少包括第二主机的网络标识和地址信息。
4.根据权利要求1所述的方法,其特征在于,在步骤B中,第二主机在接收到同步数据包后,判断是否建立与第一主机的对等直连通道,如果是,则立即向第一主机发送UDP数据包;否则,退出本流程。
5.根据权利要求1所述的方法,其特征在于,步骤B之后进一步包括第一和第二主机在接收到对方发来的UDP数据包后,向对方返回应答数据包。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述地址信息包含公网网际协议IP地址和端口号、私网IP地址和端口号。
全文摘要
本发明公开了一种建立对等直连通道的方法,该方法是服务器在接收到第一主机发来的同步请求后,同时向第一和第二主机发送至少包含对方地址信息的同步数据包;第一和第二主机在接收到同步数据包后,立即向对方发送用户数据报协议UDP数据包。使用了本发明的方法,第一和第二主机在接收到对方发来的数据包时,由于已经向对方发送了数据包,所以,除了至少一方所在网络类型为Symmetric NAT的情况,均可成功建立双方的对等直连通道。因此,本发明能够提高对等直连通道建立的成功率。
文档编号H04L12/28GK1917512SQ200510092810
公开日2007年2月21日 申请日期2005年8月18日 优先权日2005年8月18日
发明者朱冶, 张宝和, 吴波, 伍海君 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1