创建点对点数据通道的方法

文档序号:7958687阅读:165来源:国知局
专利名称:创建点对点数据通道的方法
技术领域
本发明涉及计算机网络技术领域,特别是一种创建点对点数据通道的方法。
背景技术
点对点(Peer-to-Peer,P2P)网络是一种分布式网络,P2P网络中的节点(Peer)既是资源的提供者也是资源的享受者,所有节点的资源都在该网络里面共享。最典型的是P2P下载,在P2P下载中某个节点在从别的节点下载文件的同时,它所共享的文件也被别的节点所下载。
P2P网络根据其拓扑结构可以分为4种形式中心化拓扑结构、全分布式非结构化拓扑结构、全分布式结构化拓扑结构和半分布式拓扑结构。下面介绍与本发明相关的半分布式拓扑。
参见图1,在半分布式拓扑结构中,一些在处理、存储、带宽等方面性能较高的节点被选作超级节点(SuperPeer),在各个超级节点下挂着一定数量的普通节点,超级节点还存储着系统中其他部分节点的信息,超级节点负责处理或转发它底下所挂Peer的请求。半分布式拓扑结构也是一个层次式结构,超级节点之间构成一个高速转发层,而超级节点和所负责的普通节点构成若干层次。
为了实现多种应用,需要在相应的Peer之间创建数据通道。图2所示的是现有技术中在两个Peer之间创建数据通道的过程。参照图2,在该P2P网络中,PeerA的超级节点为SuperPeerA,PeerB的超级节点为SuperPeerB,图2中还给出了服务器和PeerC,其中服务器中保存有各节点的超级节点信息和中转节点信息,PeerC为PeerA的中转节点。
如图2所示,现有技术中创建PeerA到PeerB的数据通道的过程包括如下步骤步骤101,PeerA向SuperPeerA发送查找PeerB的请求。
步骤102,SuperPeerA将该查找请求转发给Server。
步骤103,Server根据该查找请求将PeerB及其超级节点SuperPeerB的网络信息返回给SuperPeerA。
步骤104,SuperPeerA将Server返回的结果返回给PeerA。
步骤105,PeerA收到PeerB和SuperPeerB的网络信息之后,根据PeerB的网络信息向PeerB发送数据包,尝试跟PeerB创建直连数据通道。如果PeerB收到PeerA的数据包,会给PeerA发送数据包,以确定可以创建直连数据通道。
PeerA如果在预定的时间内收到PeerB返回的数据包,则表示直连成功,即创建通道成功,结束流程;如果在预定时间内未收到PeerB返回的数据包,则表示直连失败,执行步骤106。
步骤106,PeerA向SuperPeerA发送获取中转Peer请求。
步骤107,SuperPeerA将该请求转发给Server。
步骤108,Server根据该请求将中转PeerC的网络信息返回给SuperPeerA。
步骤109,SuperPeerA将Server返回的结果返回给PeerA。
步骤110,PeerA收到中转PeerC的网络信息后,根据PeerC的网络信息向PeerC发送数据包,尝试连接PeerC,同时将PeerC的网络信息发送给PeerB的超级节点SuperPeerB。
步骤111,SuperPeerB将PeerC的网络信息转发给PeerB。
步骤112,PeerB收到PeerC的网络信息之后,根据PeerC的网络信息向PeerC发送数据包,尝试连接PeerC。如果PeerC收到PeerA和PeerB的数据包后,会给PeerA和PeerB发送数据包,以确定通过PeerC可以创建中转数据通道。
最后,PeerA如果在预定时间内收到了PeerC发送来的数据包,则表示PeerA和PeerB可以通过PeerC建立中转数据通道,即PeerA和PeerB之间的数据通道创建成功;否则,表明PeerA和PeerB通过PeerC创建中转数据通道失败,即PeerA和PeerB之间创建数据通道失败。
在上面的流程中,步骤101至步骤104为查找网络信息环节,步骤105为创建直连数据通道环节,步骤106至步骤109为获取中转Peer环节,步骤110至步骤112为创建中转数据通道环节。
从现有技术可以看出,上述各个环节是串行的,如果每个环节需要10秒,则整个创建数据通道的过程需要花费40秒。这对于实时性要求较高的场合是不适用的,即使在一些实时性要求不高的场合中可以使用,但是也浪费了时间。

发明内容
有鉴于此,本发明提出了一种创建P2P数据通道的方法,用以缩短创建数据通道的时间。
根据上述目的,本发明提供了一种创建P2P数据通道的方法,该方法包括以下步骤根据上述目的,本发明提供了一种创建P2P数据通道的方法,该方法包括以下步骤A.第一节点同时向第二节点和第一中转节点发送数据包,并将第一中转节点的网络信息发送给第二节点的超级节点;B.第一节点判断在预定时间内是否收到第二节点和/或第一中转节点的数据包,如果收到来自第二节点和第一中转节点中至少一个的数据包,则根据所收到的数据包创建数据通道。
步骤A之前进一步包括A1.第一节点发送查找第二节点的请求给第一节点的超级节点,第一节点的超级节点将该查找请求转发给服务器;A2.服务器返回第二节点和第二节点的超级节点的网络信息给第一节点的超级节点,第一节点的超级节点将所述网络信息返回给第一节点。
步骤A之前进一步包括第一节点通过第一节点的超级节点到服务器获取一个或一个以上中转节点的步骤,所述一个或一个以上中转节点至少包括所述第一中转节点。
步骤A之后进一步包括如果第二节点接收到第一节点的数据包,则向第一节点发送数据包。
步骤A之后进一步包括第二节点的超级节点将第一中转节点的网络信息转发给第二节点,第二节点根据第一中转节点的网络信息向第一中转节点发送数据包;如果第一中转节点接收到第一节点和第二节点的数据包,则分别向第一节点和第二节点发送数据包。
步骤B中所述根据所收到的数据包创建数据通道的步骤包括如果收到来自第二节点的数据包和来自第一中转节点的数据包,则确定其中一个数据包对应的数据通道为最终创建的数据通道而删除另一个数据通道;如果只收到来自第二节点和第一中转节点其中一个的数据包,则确定所收到的数据包对应的数据通道为最终创建的数据通道。
步骤B中所述确定其中一个数据包对应的数据通道为最终创建的数据通道而删除另一个数据通道的步骤为确定来自第二节点的数据包对应的直连数据通道为最终创建的数据通道,删除经过第一中转节点的中转数据通道。
步骤B进一步包括如果没有收到来自第二节点或第一中转节点的数据包,则创建数据通道失败。
从上述方案中可以看出,由于在本发明中同时尝试创建直连数据通道和中转数据通道,即创建直连数据通道和中转数据通道是并行的,这样可以减少整个流程的时间。并且在直连数据通道和中转数据通道都成功创建的情况下,删除多余通道是在创建通道成功之后进行的,也不占用创建通道时间。进一步,本发明还在创建通道之前进行预取中转Peer的环节,也不占用创建时间。假设查找网络信息环节、创建直连数据通道环节、创建中转数据通道环节以及获取中转Peer环节分别需要10秒,则根据本发明的方案,整个流程只需要20秒,与现有技术的40秒相比,大大缩短了创建通道的时间,从而可以适用于各种实时性要求较高的场合。


图1为P2P网络半分布式拓扑结构的示意图。
图2为现有技术中创建数据通道的流程示意图。
图3为本发明第一实施例的流程示意图。
图4为本发明第二实施例的流程示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
本发明与现有技术的不同在于,本发明将获取中转Peer等在创建数据通道之前预先完成,并且在创建数据通道过程中同时尝试创建直连数据通道和中转数据通道,如果两者都成功创建则选择其中的一种为最后创建的数据通道,如果一种成功则将其作为成功创建的数据通道。这样大大缩短了在创建P2P数据通道中所花费的时间。
图3为本发明第一实施例的流程示意图。参见图3,本发明第一实施例中的网络结构与现有技术相同,在该网络中,包括Server、PeerA和PeerA的超级节点SuperPeerA、PeerB和PeerB的超级节点SuperPeerB以及PeerA的中转PeerC。Server中保存有各节点的超级节点信息和中转节点信息。
参照图3,本发明第一实施例包括以下步骤在创建数据通道之前,PeerA预先通过SuperPeerA从Server获取中转Peer。过程如下PeerA向SuperPeerA发送获取中转Peer请求;SuperPeerA将该请求转发给Server;Server根据该获取请求将中转PeerC的网络信息返回给SuperPeerA;SuperPeerA将Server返回的结果返回给PeerA。优选地,PeerA可以在空闲的时候获取中转Peer,或者可以定期地获取中转Peer。当然,还可以通过其它方法预先在PeerA中保存中转Peer的网络信息。
在创建PeerA和PeerB的数据通道的过程中执行以下步骤步骤201,PeerA向SuperPeerA发送查找PeerB的请求。
步骤202,SuperPeerA将该查找请求转发给Server。
步骤203,Server根据该查找请求将PeerB及其超级节点SuperPeerB的网络信息返回给SuperPeerA。
步骤204,SuperPeerA将Server返回的结果返回给PeerA。
步骤205,PeerA收到PeerB和SuperPeerB的网络信息之后,根据PeerB的网络信息向PeerB发送数据包,尝试跟PeerB创建直连数据通道。如果PeerB收到PeerA的数据包,会给PeerA发送数据包,以确定可以创建直连数据通道。
与此同时,PeerA根据预先获取的中转PeerC的网络信息向PeerC发送数据包,尝试连接PeerC。PeerA同时还将PeerC的网络信息发送给PeerB的超级节点SuperPeerB。
步骤206,SuperPeerB将PeerC的网络信息转发给PeerB。
步骤207,PeerB收到PeerC的网络信息之后,根据PeerC的网络信息向PeerC发送数据包,尝试连接PeerC。如果PeerC收到PeerA和PeerB的数据包后,会给PeerA和PeerB发送数据包,以确定可以通过PeerC创建中转数据通道。
最后,PeerA判断在预定时间内是否收到PeerB和/或PeerC返回的数据包,如果在预定的时间内收到PeerB返回的数据包而没有收到PeerC返回的数据包,则表示可以创建直连数据通道而不可以创建中转数据通道,以直连数据通道作为最后成功创建的数据通道;如果在预定的时间内收到PeerC返回的数据包而没有收到PeerB返回的数据包,则表示可以创建中转数据通道而不可以创建直连数据通道,以中转数据通道作为最后成功创建的数据通道;如果在预定的时间内收到PeerB返回的数据包也收到PeerC返回的数据包,则表示可以创建直连数据通道并且也可以创建中转数据通道,PeerA可以选择其中任意一个作为最后成功创建的数据通道,并删除多余的数据通道,优选选择直连数据通道而删除中转数据通道;如果在预定的时间内既没有收到PeerB返回的数据包也没有收到PeerC发送来的数据包,则表示创建直连数据通道失败并且创建中转数据通道也失败,即没有成功创建PeerA与PeerB的数据通道。
在创建任意两个节点之间的数据通道时都可以使用本发明的方法,例如在创建PeerA与中转PeerC之间的数据通道或者创建PeerB与中转PeerC之间的数据通道时也可以使用本发明的方法。
在本发明的第二实施例中,进一步通过参照图4描述创建PeerB与中转PeerC之间数据通道的流程来阐述本发明的方法。图4与图3相比,进一步给出了PeerC的超级节点SuperPeerC以及PeerB的中转节点PeerD。
如图4所示,本发明的第二实施例包括在创建数据通道之前,PeerB预先通过SuperPeerB从Server获取中转Peer。过程如下PeerB向SuperPeerB发送获取中转Peer请求;SuperPeerB将该请求转发给Server;Server根据该获取请求将中转PeerD的网络信息返回给SuperPeerB;SuperPeerB将Server返回的结果返回给PeerB。优选地,PeerB可以在空闲的时候获取中转Peer,或者可以定期地获取中转Peer。当然,还可以通过其它方法预先在PeerB中保存中转Peer的网络信息。
在创建PeerB和PeerC的数据通道的过程中执行以下步骤步骤301,PeerB向SuperPeerB发送查找PeerC的请求。
步骤302,SuperPeerB将该查找请求转发给Server。
步骤303,Server根据该查找请求将PeerC及其超级节点SuperPeerC的网络信息返回给SuperPeerB。
步骤304,SuperPeerB将Server返回的结果返回给PeerB。
步骤305,PeerB收到PeerC和SuperPeerC的网络信息之后,根据PeerC的网络信息向PeerC发送数据包,尝试跟PeerC创建直连数据通道。如果PeerC收到PeerB的数据包,会给PeerB发送数据包,以确定可以创建直连数据通道。
与此同时,PeerB根据预先获取的中转PeerD的网络信息向PeerD发送数据包,尝试连接PeerD。PeerB同时还将PeerD的网络信息发送给PeerC的超级节点SuperPeerC。
步骤306,SuperPeerC将PeerD的网络信息转发给PeerC。
步骤307,PeerC收到PeerD的网络信息之后,根据PeerD的网络信息向PeerD发送数据包,尝试连接PeerD。如果PeerD收到PeerB和PeerC的数据包后,会给PeerB和PeerC发送数据包,以确定可以通过PeerD创建中转数据通道。
最后,PeerB判断在预定时间内是否收到PeerC和/或PeerD返回的数据包,PeerB如果在预定的时间内收到PeerC返回的数据包而没有收到PeerD返回的数据包,则表示可以创建直连数据通道而不可以创建中转数据通道,以直连数据通道作为最后成功创建的数据通道;如果在预定的时间内收到PeerD返回的数据包而没有收到PeerC返回的数据包,则表示可以创建中转数据通道而不可以创建直连数据通道,以中转数据通道作为最后成功创建的数据通道;如果在预定的时间内收到PeerC返回的数据包也收到PeerD返回的数据包,则表示可以创建直连数据通道并且也可以创建中转数据通道,PeerB可以选择其中任意一个作为最后成功创建的数据通道,并删除多余的数据通道,优选选择直连数据通道而删除中转数据通道;如果在预定的时间内既没有收到PeerC返回的数据包也没有收到PeerD发送来的数据包,则表示创建直连数据通道失败并且创建中转数据通道也失败,即没有成功创建PeerB与PeerC的数据通道。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种创建点对点P2P数据通道的方法,其特征在于,该方法包括以下步骤A.第一节点同时向第二节点和第一中转节点发送数据包,并将第一中转节点的网络信息发送给第二节点的超级节点;B.第一节点判断在预定时间内是否收到第二节点和/或第一中转节点的数据包,如果收到来自第二节点和第一中转节点中至少一个的数据包,则根据所收到的数据包创建数据通道。
2.根据权利要求1所述的方法,其特征在于,步骤A之前进一步包括A1.第一节点发送查找第二节点的请求给第一节点的超级节点,第一节点的超级节点将该查找请求转发给服务器;A2.服务器返回第二节点和第二节点的超级节点的网络信息给第一节点的超级节点,第一节点的超级节点将所述网络信息返回给第一节点。
3.根据权利要求1所述的方法,其特征在于,步骤A之前进一步包括第一节点通过第一节点的超级节点到服务器获取一个或一个以上中转节点的步骤,所述一个或一个以上中转节点至少包括所述第一中转节点。
4.根据权利要求1所述的方法,其特征在于,步骤A之后进一步包括如果第二节点接收到第一节点的数据包,则向第一节点发送数据包。
5.根据权利要求1或4所述的方法,其特征在于,步骤A之后进一步包括第二节点的超级节点将第一中转节点的网络信息转发给第二节点,第二节点根据第一中转节点的网络信息向第一中转节点发送数据包;如果第一中转节点接收到第一节点和第二节点的数据包,则分别向第一节点和第二节点发送数据包。
6.根据权利要求1所述的方法,其特征在于,步骤B中所述根据所收到的数据包创建数据通道的步骤包括如果收到来自第二节点的数据包和来自第一中转节点的数据包,则确定其中一个数据包对应的数据通道为最终创建的数据通道而删除另一个数据通道;如果只收到来自第二节点和第一中转节点其中一个的数据包,则确定所收到的数据包对应的数据通道为最终创建的数据通道。
7.根据权利要求6所述的方法,其特征在于,步骤B中所述确定其中一个数据包对应的数据通道为最终创建的数据通道而删除另一个数据通道的步骤为确定来自第二节点的数据包对应的直连数据通道为最终创建的数据通道,删除经过第一中转节点的中转数据通道。
8.根据权利要求1、6或7所述的方法,其特征在于,步骤B进一步包括如果没有收到来自第二节点或第一中转节点的数据包,则创建数据通道失败。
全文摘要
本发明公开了一种创建点对点数据通道的方法,其特征在于,该方法包括以下步骤A.第一节点同时向第二节点和第一中转节点发送数据包并将第一中转节点的网络信息发送给第二节点的超级节点;B.第一节点判断在预定时间内是否收到第二节点和/或第一中转节点的数据包,如果收到来自其中至少一个的数据包,则根据所收到的数据包创建数据通道。从上述方案中可以看出,由于在本发明中同时尝试创建直连数据通道和中转数据通道,减少了整个创建数据通道流程的时间,可以适用于各种实时性要求较高的场合。
文档编号H04L12/56GK101047580SQ20061006652
公开日2007年10月3日 申请日期2006年3月28日 优先权日2006年3月28日
发明者朱冶, 吴波, 何法江 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1