首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

P2P打洞传输方法和系统、电子装置及计算机可读存储介质 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:深圳市网心科技有限公司

摘要:本发明公开了一种P2P打洞传输方法,应用于客户端,该方法包括:通过STUN服务器获取自身的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过就近区域的STUN服务器获取;向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。本发明还提供一种P2P打洞传输系统、电子装置及计算机可读存储介质。本发明能够准确探测客户端最近的外网IP和port,并缩短路由路径节点距离,提升P2P打洞的成功率和传输效率。

主权项:1.一种P2P打洞传输方法,应用于客户端,其特征在于,所述方法包括:通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;发送探测数据包给所述STUN服务器;接收所述STUN服务器回传的所述客户端的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过就近区域的STUN服务器获取,所述STUN服务器在各个区域分布式部署;及向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。

全文数据:P2P打洞传输方法和系统、电子装置及计算机可读存储介质技术领域本发明涉及数据传输技术领域,尤其涉及一种P2P打洞传输方法和系统、电子装置及计算机可读存储介质。背景技术现有的基于单节点的STUNSimpleTraversalofUDPoverNATs,NAT的UDP简单穿越服务P2P打洞技术方案中,客户端a和客户端b均是经由各自对应的NATNetworkAddressTranslation,网络地址转换网关,通过同一个STUN服务器探测自己的外网IP和端口port,然后通过Internet网络向对方发送各自的外网IP和port,再向对方的外网IP和port发送数据包,如果对方可以收到数据包,则该P2P打洞数据传输通道建立成功,否则该P2P打洞数据传输通道建立失败。但是,这种方式存在着如下的缺陷:由于STUN服务器是单节点或者是少数几个节点部署的,如果用户a和用户b处在和STUN服务器处在不同的运营商网络上,由于运营商网络在国内互联互通比较复杂,在用户后端多级NAT设备的情况下,将可能导致用户a和用户b的外网互通的几率减少。另外,在上述环境下,即使P2P打洞连接成功,可能也将会导致用户a和用户b之间的路由路径过长,影响数据传输速率。发明内容有鉴于此,本发明提出一种P2P打洞传输方法和系统、电子装置及计算机可读存储介质,以解决至少一个上述技术问题。首先,为实现上述目的,本发明提出一种P2P打洞传输方法,应用于客户端,所述方法包括:通过STUN服务器获取自身的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过就近区域的STUN服务器获取;及向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。可选地,所述建立P2P打洞数据传输通道还包括:当所述客户端接收到所述远端客户端发送的测试数据包后,及时向所述远端客户端反馈ACK回应帧;当所述客户端在预设时间内收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当所述客户端超时没有收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,所述客户端通过公网中的中继服务器与所述远端客户端进行中转传输。可选地,所述通过所述STUN服务器获取自身的外网IP和端口包括:通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;发送探测数据包给所述STUN服务器;接收所述STUN服务器回传的所述客户端的外网IP和端口。此外,为实现上述目的,本发明还提供一种电子装置,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的P2P打洞传输程序,所述P2P打洞传输程序被所述处理器执行时实现如下方法:通过STUN服务器获取自身的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过就近区域的STUN服务器获取;及向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。可选地,所述建立P2P打洞数据传输通道还包括:当所述电子装置接收到所述远端客户端发送的测试数据包后,及时向所述远端客户端反馈ACK回应帧;当所述电子装置在预设时间内收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当所述电子装置超时没有收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,所述客户端通过公网中的中继服务器与所述远端客户端进行中转传输。可选地,所述通过所述STUN服务器获取自身的外网IP和端口包括:通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;发送探测数据包给所述STUN服务器;接收所述STUN服务器回传的所述电子装置的外网IP和端口。进一步地,为实现上述目的,本发明还提供一种P2P打洞传输系统,所述系统包括:STUN服务器;至少两个客户端;两个所述客户端分别通过所述STUN服务器获取自身的外网IP和端口;两个所述客户端分别通过Internet网络向对方发送自身的外网IP和端口,以及获取对方的外网IP和端口;两个所述客户端各自向对方的外网IP和端口发送测试数据包,以建立P2P打洞数据传输通道。可选地,所述STUN服务器为多个,每个所述STUN服务器连接一个或多个NAT网关,每个所述NAT网关连接一个或多个所述客户端,两个所述客户端分别经由对应的所述NAT网关,通过就近区域的所述STUN服务器获取自身的外网IP和端口。可选地,所述建立P2P打洞数据传输通道还包括:当所述客户端接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧;当至少一个所述客户端在预设时间内收到对方反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当两个所述客户端都超时没有收到对方反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,两个所述客户端之间通过公网中的中继服务器进行中转传输。可选地,所述通过所述STUN服务器获取自身的外网IP和端口包括:所述客户端通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;所述客户端发送探测数据包给所述STUN服务器;所述客户端接收所述STUN服务器回传的所述客户端的外网IP和端口。进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有P2P打洞传输程序,所述P2P打洞传输程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的P2P打洞传输方法。相较于现有技术,本发明所提出的P2P打洞传输方法和系统、电子装置及计算机可读存储介质,可以准确探测客户端最近的外网IP和port,优化后台多级NAT出口IP和port变化的可能,提升P2P打洞的成功率。并且可以缩短路由路径节点距离,提升P2P传输效率。附图说明图1是本发明第一实施例提出的一种P2P打洞传输系统的架构示意图;图2是本发明第二实施例提出的一种电子装置的架构示意图;图3是本发明第三实施例提出的一种P2P打洞传输方法的流程示意图;图4是本发明第四实施例提出的一种P2P打洞传输方法的流程示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。第一实施例参阅图1所示,本发明第一实施例提出一种P2P打洞传输系统较佳实施例的架构示意图。在本实施例中,P2P打洞传输系统1包括多个STUN服务器2,每个STUN服务器2连接一个或多个NAT网关3,每个NAT网关3连接一个或多个客户端4,上述各个装置之间通过有线或无线网络进行数据通信。在本实施例中,为了解决P2P打洞成功率,以及优化P2P传输路由路径,所以STUN服务器2采用分布式方式部署,覆盖各个区域的运营商网络,提升跨网域能力。两个客户端4本地客户端41和远端客户端42,图中未示出分别经由对应的NAT网关3,通过就近区域的STUN服务器2获取自身的外网IP和port。然后通过Internet网络向对方发送自身的外网IP和port,以及获取对方的外网IP和port。最后本地客户端41和远端客户端42各自向对方的外网IP和port发送测试数据包,以建立P2P打洞数据传输通道。其中,当本地客户端41或远端客户端42接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧。当本地客户端41或远端客户端42在预设时间内收到对方反馈的ACK回应帧时,确定该P2P打洞数据传输通道建立成功。当本地客户端41和远端客户端42都超时没有收到对方反馈的ACK回应帧时,确定该P2P打洞数据传输通道建立失败。若该P2P打洞数据传输通道建立失败,则本地客户端41和远端客户端42需要通过公网中的中继relay服务器进行中转传输。上述P2P打洞传输系统1中各个装置的功能的详细说明请参阅下述第三实施例,在此不再赘述。第二实施例参阅图2所示,本发明第二实施例提出一种电子装置10。在本实施例中,所述电子装置10可以为所述客户端4本地客户端41。所述电子装置10包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口如WI-FI接口。通信总线17用于实现这些组件之间的连接通信。存储器11至少包括一种类型的可读存储介质。上述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,上述存储器11可以是电子装置10的内部存储单元,例如该电子装置10的硬盘。在另一些实施例中,上述存储器11也可以是电子装置10的外部存储单元,例如电子装置10上配备的插接式硬盘,智能存储卡SmartMediaCard,SMC,安全数字SecureDigital,SD卡,闪存卡FlashCard等。上述存储器11可以用于存储安装于电子装置10的应用软件及各类数据,例如P2P打洞传输程序100的程序代码及其运行过程中产生的相关数据。处理器13在一些实施例中可以是一中央处理器,微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。图2仅示出了具有组件11、13、15、17以及P2P打洞传输程序100的电子装置10,但是应理解的是,图2并未示出电子装置10的所有组件,可以替代实施更多或者更少的组件。在图2所示的电子装置10实施例中,作为一种计算机存储介质的存储器11中存储P2P打洞传输程序100的程序代码,处理器13执行上述P2P打洞传输程序100的程序代码时,实现如下方法:1经由对应的NAT网关3,通过STUN服务器2获取自身的外网IP和port。2通过Internet网络向远端客户端4发送自身的外网IP和port。3通过Internet网络获取远端客户端4的外网IP和port。4向远端客户端42的外网IP和port发送测试数据包,并接收远端客户端42发送的测试数据包,以建立P2P打洞数据传输通道。其中,当本地客户端41电子装置10或远端客户端42接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧。当本地客户端41或远端客户端42在预设时间内收到对方反馈的ACK回应帧时,确定该P2P打洞数据传输通道建立成功。当本地客户端41和远端客户端42都超时没有收到对方反馈的ACK回应帧时,确定该P2P打洞数据传输通道建立失败。若该P2P打洞数据传输通道建立失败,则本地客户端41和远端客户端42需要通过公网中的中继服务器进行中转传输。上述方法的详细说明请参阅下述第四实施例,在此不再赘述。第三实施例参阅图3所示,本发明第三实施例提出一种P2P打洞传输方法,应用于上述P2P打洞传输系统1。在本实施例中,根据不同的需求,图3所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。该方法包括:S10,本地客户端41和远端客户端42分别经由对应的NAT网关3,通过STUN服务器2获取自身的外网IP和port。在本实施例中,客户端4本地客户端41和远端客户端42可以通过调度服务器图1中未示出获取该客户端4所在同一区域就近区域的具有公网IP的STUN服务器2信息,其中该调度服务器中包含了线上所有STUN服务器2的信息。根据STUN的BindingRequests协议,客户端4发送探测数据包给就近区域的STUN服务器2,该STUN服务器2接收客户端4发送的探测数据包后,得到该客户端4的外网NAT公网IP和port,并把该IP和port打包回传给该客户端4。例如,A客户端本地客户端41经过NATA网关,通过就近区域的STUN服务器A探测自身的外网IP_a:port_a。B客户端远端客户端42经过NATB网关,通过就近区域的STUN服务器B探测自身的外网IP_b:port_b。S12,本地客户端41和远端客户端42通过Internet网络向对方发送自身的外网IP和port。例如,A客户端通过Internet网络向B客户端发送自身的外网IP_a:port_a,B客户端通过Internet网络向A客户端发送自身的外网IP_b:port_b。S14,本地客户端41和远端客户端42通过Internet网络获取对方的IP和port。例如,A客户端通过Internet网络接收B客户端发送的外网IP_b:port_b,B客户端通过Internet网络接收A客户端发送的外网IP_a:port_a。S16,本地客户端41和远端客户端42各自向对方的外网IP和port发送测试数据包,以建立P2P打洞数据传输通道。当本地客户端41或远端客户端42接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧。只要本地客户端41和远端客户端42中至少一方在预设时间内收到对方反馈的ACK回应帧,则确定该P2P打洞数据传输通道建立成功。若本地客户端41和远端客户端42都超时没有收到对方反馈的ACK回应帧,则确定该P2P打洞数据传输通道建立失败。若该P2P打洞数据传输通道建立失败,则本地客户端41和远端客户端42需要通过公网中的中继服务器进行中转传输。本实施例提供的P2P打洞传输方法,可以准确探测客户端4最近的外网IP和port,优化后台多级NAT出口IP和port变化的可能,提升P2P打洞的成功率。并且可以缩短路由路径节点距离,提升P2P传输效率。第四实施例参阅图4所示,本发明第四实施例提出一种P2P打洞传输方法,应用于上述电子装置10,也就是客户端4本地客户端41。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。该方法包括:S20,经由对应的NAT网关3,通过STUN服务器2获取自身的外网IP和port。在本实施例中,客户端4可以通过调度服务器图1中未示出获取该客户端4所在同一区域就近区域的具有公网IP的STUN服务器2信息,其中该调度服务器中包含了线上所有STUN服务器2的信息。根据STUN的BindingRequests协议,客户端4发送探测数据包给就近区域的STUN服务器2,该STUN服务器2接收客户端4发送的探测数据包后,得到该客户端4的外网NAT公网IP和port,并把该IP和port打包回传给该客户端4。S22,通过Internet网络向远端客户端42发送自身的外网IP和port。S24,通过Internet网络获取远端客户端42的外网IP和port。S26,向远端客户端42的外网IP和port发送测试数据包,并接收远端客户端42发送的测试数据包,以建立P2P打洞数据传输通道。当本地客户端41电子装置10或远端客户端42接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧。只要本地客户端41和远端客户端42中至少一方在预设时间内收到对方反馈的ACK回应帧,则确定该P2P打洞数据传输通道建立成功。若本地客户端41和远端客户端42都超时没有收到对方反馈的ACK回应帧,则确定该P2P打洞数据传输通道建立失败。若该P2P打洞数据传输通道建立失败,则本地客户端41和远端客户端42需要通过公网中的中继relay服务器进行中转传输。本实施例提供的P2P打洞传输方法,可以准确探测客户端4最近的外网IP和port,优化后台多级NAT出口IP和port变化的可能,提升P2P打洞的成功率。并且可以缩短路由路径节点距离,提升P2P传输效率。第五实施例本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,上述计算机可读存储介质存储有P2P打洞传输程序100,上述P2P打洞传输程序100可被至少一个处理器执行,以使上述至少一个处理器执行如上述的P2P打洞传输方法。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质如ROMRAM、磁碟、光盘中,包括若干指令用以使得一台客户端可以是手机,计算机,电子装置,空调器,或者网络设备等执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

权利要求:1.一种P2P打洞传输方法,应用于客户端,其特征在于,所述方法包括:通过STUN服务器获取自身的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过就近区域的STUN服务器获取;及向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。2.如权利要求1所述的P2P打洞传输方法,其特征在于,所述建立P2P打洞数据传输通道还包括:当所述客户端接收到所述远端客户端发送的测试数据包后,及时向所述远端客户端反馈ACK回应帧;当所述客户端在预设时间内收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当所述客户端超时没有收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,所述客户端通过公网中的中继服务器与所述远端客户端进行中转传输。3.如权利要求1或2所述的P2P打洞传输方法,其特征在于,所述通过所述STUN服务器获取自身的外网IP和端口包括:通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;发送探测数据包给所述STUN服务器;接收所述STUN服务器回传的所述客户端的外网IP和端口。4.一种电子装置,其特征在于,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的P2P打洞传输程序,所述P2P打洞传输程序被所述处理器执行时实现如下方法:通过STUN服务器获取自身的外网IP和端口;通过Internet网络向远端客户端发送自身的外网IP和端口;通过Internet网络获取所述远端客户端的外网IP和端口,所述远端客户端的外网IP和端口由所述远端客户端通过所述就近区域的STUN服务器获取;及向所述远端客户端的外网IP和端口发送测试数据包,并接收所述远端客户端发送的测试数据包,以建立P2P打洞数据传输通道。5.如权利要求4所述的电子装置,其特征在于,所述建立P2P打洞数据传输通道还包括:当所述电子装置接收到所述远端客户端发送的测试数据包后,及时向所述远端客户端反馈ACK回应帧;当所述电子装置在预设时间内收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当所述电子装置超时没有收到所述远端客户端反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,所述客户端通过公网中的中继服务器与所述远端客户端进行中转传输。6.如权利要求4或5所述的电子装置,其特征在于,所述通过所述STUN服务器获取自身的外网IP和端口包括:通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;发送探测数据包给所述STUN服务器;接收所述STUN服务器回传的所述电子装置的外网IP和端口。7.一种P2P打洞传输系统,其特征在于,所述系统包括:STUN服务器;至少两个客户端;两个所述客户端分别通过所述STUN服务器获取自身的外网IP和端口;两个所述客户端分别通过Internet网络向对方发送自身的外网IP和端口,以及获取对方的外网IP和端口;两个所述客户端各自向对方的外网IP和端口发送测试数据包,以建立P2P打洞数据传输通道。8.如权利要求7所述的P2P打洞传输系统,其特征在于,所述STUN服务器为多个,每个所述STUN服务器连接一个或多个NAT网关,每个所述NAT网关连接一个或多个所述客户端,两个所述客户端分别经由对应的所述NAT网关,通过就近区域的所述STUN服务器获取自身的外网IP和端口。9.如权利要求7所述的P2P打洞传输系统,其特征在于,所述建立P2P打洞数据传输通道还包括:当所述客户端接收到对方发送的测试数据包后,及时向对方反馈ACK回应帧;当至少一个所述客户端在预设时间内收到对方反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立成功;当两个所述客户端都超时没有收到对方反馈的ACK回应帧时,确定所述P2P打洞数据传输通道建立失败,两个所述客户端之间通过公网中的中继服务器进行中转传输。10.如权利要求7或8所述的P2P打洞传输系统,其特征在于,所述通过所述STUN服务器获取自身的外网IP和端口包括:所述客户端通过调度服务器获取就近区域的具有公网IP的STUN服务器信息;所述客户端发送探测数据包给所述STUN服务器;所述客户端接收所述STUN服务器回传的所述客户端的外网IP和端口。11.一种计算机可读存储介质,所述计算机可读存储介质存储有P2P打洞传输程序,所述P2P打洞传输程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-3中任一项所述的P2P打洞传输方法。

百度查询: 深圳市网心科技有限公司 P2P打洞传输方法和系统、电子装置及计算机可读存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。