数据中转方法、系统、客户端及服务器的制作方法

文档序号:7694545阅读:233来源:国知局
专利名称:数据中转方法、系统、客户端及服务器的制作方法
技术领域
本发明涉及互联网技术领域,特别涉及数据中转方法、系统、客户端及 服务器。
背景技术
P2P是一种分布式网络,网络的参与者共享他们所拥有的 一部分硬件资 源如处理能力、存储能力、网络连接能力、打印机等,这些共享资源需要由 网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间 实体。在此网络中的参与者既是资源,如服务和内容的提供者(Server), 又是资源,如服务和内容的获取者(Client),数据传输通过节点进行,不 需要很多的中央服务器。目前的互联网遵循英特网协议(IP, Internet Protocol),每个节点分配 一个IP地址,节点之间通过访问对方的IP地址进行数据传输。IP地址分为 7>网;也iit和矛A网i也i止两大类。由于公网IP地址是有限且唯一的,且出于安全性的考虑,很多的用户 会使用私有网络(简称私网)的IP地址或者通过防火墙与互联网连接。在 使用私网IP地址时需要用网络地址转换(NAT, Network Address Translation ) 技术来实现,该才支术允许一个整体才几构以一个7>用网络IP( Internet Protocol) 地址出现在互耳关网上。顾名思义,它是一种把内部私网IP地址翻i,成^^网 IP地址的技术。而防火墙和NAT有一个共同的特点,私网中的节点可以向 公网中的节点发送数据,而公网中的数据包无法直接进入私网内或者防火墙 内的节点,即只能发送数据不能接收数据。这虽然保证了私网内节点的安全 性和私密性,但是也很大程度上阻碍了 P2P节点之间的互联互通。为了解决上述节点的互联互通的问题,需要使用到用户数据报协议简单穿越网络地址转换器(STUN, Simple Traversal of UDP Through NATs )技 术,在STUN协议中,将NAT可分为完全圓锥形(Full Cone) 、 IP限制圆 锥形(IP Restricted Cone)、端口限制圓锥形(Port Restricted Cone )和对称 (Symmetric) 4种类型。以上4种NAT中,前3种NAT统称为圓锥形NAT ( Cone NAT ),由 于圓锥形NAT会为该节点在NAT上映射一个固定的数据回传端口,因此, 只要知道了 NAT上的数据回传端口和NAT类型,就可以穿越NAT直接将 数据包发送给私网内的节点了 ,而对称NAT则由于回传端口会根据不同的 连接目标而变化,虽然可以利用端口猜测等方法找到数据回传端口,但是成 功概率极低,因此一般无法与采用该类型的NAT的私网内的节点直接通信。另外,简单防火墙一般不进行IP地址和端口的转换,只是会阻止任何 未知的向内的数据包,因此,对于筒单防火墙来说,可以参考与圆锥形NAT 同样的方法与简单防火墙后的节点进行直接通信。私网内节点或者防火墙后的节点可以通过公网上的STUN服务器来检 测自己的N AT类型或者是否为简单防火墙,并得到回传数据的端口信息等, 利用这些信息,就可以完成圓锥形NAT或简单防火墙的穿越,如公网节点 一样收发数据了。在P2P系统中,不仅要解决私网内节点的数据传输问题,也要解决数据 传输速度的问题, 一般为了优化P2P系统的数据传输,P2P客户端会分析节 点的硬件资源,让有较大带宽的高速计算机担任超级节点,超级节点可以利 用其本身的高带宽优势为其它节点中转数据,提高P2P系统的数据传输性 能。成为超级节点的一个必要条件^^其它节点能够给超级节点发送数据包, 因此现有的P2P系统一般会选择具有公网IP并且没有使用防火墙的节点作 为超级节点。图1为现有P2P系统的结构图,如图l所示,该系统包括P2P服务器、 节点1、节点2和超级节点群,之间通过互联网相连。P2P服务器用于对系统内的节点的数据传输进行控制,超级节点群中包 括多个超级节点,任意两节点之间可以通过直连进行数据传输,也可以从超 级节点群中选择一个或多个超级节点作为节点之间的数据中转节点,进行数 据中转,当然,如果没有超级节点可用,还可以通过专门设立的中转服务器 进行数据中转。图2为现有P2P系统利用超级节点中转数据的流程图,当节点l通过超 级节点中转数据到节点2之前,首先要经过登录过程,节点l、节点2和超 级节点需要登录到P2P服务器上,并报告自身网络类型,使P2P服务器可 以掌握所有的P2P资源和连接情况。这里的网络类型是指该节点所处的网络 状态,如公网、简单防火墙、完全圓锥形NAT、 IP限制圆锥形NAT、端口 限制圓锥形NAT或对称NAT等等,节点登录P2P服务器并没有顺序要求, 图中节点的登录顺序仅为示意,实际上节点登录P2P服务器的过程是随机发 生的,任何情况都有可能。当然,现有情况下,只有那些拥有公网IP地址 的节点可以作为超级节点登录。在登录过程之后,登录在P2P服务器上的节 点就可以使用登录在P2P服务器上的超级节点进行数据中转了 ,具体使用超 级节点进行数据中转的流程包括如下步骤步骤201,节点1向P2P服务器发送请求超级节点的消息,请求进行数 据中转。这里请求进行数据中转的节点l可以是一个普通的节点,也可以是 一个超级节点,请求数据中转的节点并不要求一定是普通的节点。步骤202, P2P服务器将从超级节点群中选择的超级节点的IP和端口信 息发送给节点1。 P2P服务器接到节点1的请求后将从所有登录的超级节点 中选择一个或多个作为数据中转节点,并将它们的IP地址和端口等信息通 知节点1,使节点1可以直接与超级节点进行通信。步骤203,节点1向超级节点发送预定超级节点消息,通知超级节点需 要它为节点1和节点2之间的数据传输进行数据中转。步骤204,超级节点返回预定超级节点响应,确认接受预定。 一般情况 下,超级节点被规定为只能为一组节点进行数据中转,如节点1和节点2,这主要是出于对节点的硬件性能的考虑,如果超级节点返回了响应,那么它 将不再接受别的节点的预定请求,当然,也不排除一个超级节点可以为多组 节点进行数据中转的情况。步骤205,节点1向P2P服务器发送通知,通知节点2连接超级节点。 这个通知中包含超级节点的IP地址和端口等信息,使得节点2可以知道如 何连接超级节点。步骤206, P2P服务器通知节点2连接超级节点。 步骤207,节点2向超级节点发送请求消息,请求使用超级节点。 步骤208,超级节点返回响应消息,确认可以使用超级节点。 步骤209,节点2通知超级节点自己已经准备好,可以进行数据中转。 步骤210,超级节点通知P2P服务器节点2已经准备好,可以进行数据 中转。步骤211, P2P服务器通知节点1,节点2已经准备好,可以进行数据 中转。步骤212,节点1请求超级节点转发数据给节点2。 步骤213,超级节点将节点l需要转发的数据向节点2转发。 步骤214,节点2请求超级节点转发数据给节点1。 步骤215,超级节点将节点2需要转发的数据向节点1转发。 步骤203~215是数据中转执行过程,该过程的前提是节点1和节点2 可以连接到超级节点,因此现有技术中,只有那些具有公网IP并且没有使 用防火墙的节点可以作为超级节点登录到P2P服务器,而使用NAT方式或 通过防火墙接入互联网的节点,即使拥有很强大的硬件资源和传输带宽,但 是由于NAT或防火墙的存在,使得该节点无法被其它的节点直接的访问到, 因此无法作为超级节点登录。随着互联网的发展,P2P用户的快速增加,拥 有公网IP地址的节点所占的比例会越来越小,大量的私网内的节点需要超 级节点进行中转,因此超级节点的中转负担将越来越大,有限的中转资源被 越来越多的用户分享,造成超级节点不够用,节点之间无法中转数据或中转数据的速度降低的情况,降低了 P2P系统的数据传输性能,另外过大的中转负担也会影响超级节点的正常运行,影响超级节点的用户对P2P数据共享的 使用体验。发明内容本发明实施例提供 一 种数据中转方法,可以使更多的节点用于数据中 转,从而提高P2P系统的传输性能。本发明实施例提供一种数据中转系统,可以使更多的节点用于数据中 转,从而提高P2P系统的传输性能。本发明实施例提供一种P2P服务器,可以使更多的节点用于数据中转, 从而提高P2P系统的传输性能。本发明实施例提供一种P2P客户端,可以使更多的节点用于数据中转, 从而提高P2P系统的传输性能。为达到上述目的,本发明的技术方案具体是这样实现的一种数据中转方法,该方法包括点对点P2P客户端判断节点自身的网络类型,若符合预设的增补超级节点 的确定条件,则作为增补超级节点登录P2P服务器;P2P服务器接收节点的数据中转请求,根据预设的规则,从超级节点和增 补超级节点中选择出数据中转节点;若选择增补超级节点作为数据中转节点,则通过增补超级节点为请求中 转数据的节点进行数据中转。一种数据中转系统,该系统包括P2P客户端,用于判断节点自身的网络类型,若符合预设的增补超级节点 的确定条件,则作为增补超级节点登录P2P服务器;当所述P2P客户端作为增 补超级节点登录P2P服务器,且被所述P2P服务器选为数据中转节点时,为请 求中转数据的节点进行数据中转;P2P服务器,用于接受所述P2P客户端作为增补超级节点登录,并接收节点的数据中转请求,根据预设的规则,从超级节点和增补超级节点中选择 出数据中转节点。一种P2P服务器,该P2P服务器包括 节点登录模块,用于接受P2P客户端作为增补超级节点登录; 中转节点选择模块,用于接收节点的数据中转请求,根据预设的规则, 从超级节点和增补超级节点中选择出数据中转节点。 一种P2P客户端,该客户端包括网络类型判断模块,用于判断P2P客户端所处节点的网络类型; 登录模块,用于在所述网络类型判断模块判断所述节点的网络类型符合预设的增补超级节点的确定条件时,将所述节点作为增补超级节点登录P2P服务器。由上述的技术方案可见,本发明的这种数据中转方法、系统、P2P客户 端及P2P服务器,通过将符合预设的增补超级节点的确定条件的节点,作为 增补超级节点登录P2P服务器,并在P2P服务器接收到节点的数据中转请 求时,根据预设的规则,从超级节点和增补超级节点中选择出数据中转节点; 并在选择增补超级节点作为数据中转节点时,通过增补超级节点为请求中转 数据的节点进行数据中转,因此扩展了可用于数据中转的节点的选择范围, 从而提高了 P2P系统的传输性能。


图l为现有P2P系统的结构图;图2为现有P2P系统利用超级节点中转数据的流程图; 图3为本发明实施例的数据中转方法流程图;图4为本发明实施例的数据中转系统使用增补超级节点进行数据中转 的具体流程图;图5为本发明实施例的数据中转系统结构图; 图6为本发明实施例的P2P客户端结构图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明进一步详细说明。本发明实施例主要是利用STUN技术,使需要数据中转的节点可以向一 部分没有公网IP的节点发送数据包,从而使这部分没有公网IP的节点可以 作为增补超级节点用于数据中转,在超级节点不够的情况下,可以使用增补 超级节点实现与超级节点相同的数据中转功能,扩展了可用于数据中转的节 点的选择范围,从而提高P2P系统的传输性能。图3为本发明实施例的数据中转方法流程图,如图3所示,该流程包括步骤301, P2P客户端判断节点自身的网络类型,若符合预设的增补超 级节点的确定条件,则作为增补超级节点登录P2P服务器。这里的增补超级节点是指非公网IP的超级节点但是也可以作为超级节 点使用的节点,根据STUN协议的规定,除公网以外,理论上,网络类型为 完全圆锥形NAT、 IP限制圆锥形NAT、端口限制圆锥形NAT或者筒单防 火墙的节点都是可以发送UDP数据包的,因此只要是以上所列的网络类型, 都可以作为超级节点使用,也就是说,增补超级节的确定点条件可以为网 络类型为完全圆锥形NAT、 IP限制圆锥形NAT、端口限制圆锥形NAT或 者简单防火墙中任意一种网络类型。当然,跟据实际的需要,也可以只允许 某一个或某几个网络类型的节点作为增补超级节点,比如只允许完全圓锥形 NAT的节点作为增补超级节点,或只允许完全圆锥形NAT和端口限制圓锥 形NAT的节点作为增补超级节点等等。另外,P2P客户端判断节点自身的网络类型可以通过与公网上的STUN 服务器交换数据包进行测试,具体测试方法不是本发明的讨论内容,这里就 不详述了。步骤302, P2P服务器接收节点的数据中转请求,根据预设的规则,从 超级节点和增补超级节点中选择出数据中转节点。预设的规则可以是将有公网IP的超级节点作为优先的选择对象,判断 是否有超级节点可以作为数据中转节点,若没有超级节点可以作为数据中转 节点,则选择增补超级节点作为数据中转节点。当然如果增补超级节点的带 宽、硬件性能等其他指标很好,也可以在有超级节点的情况下直接选择增补 超级节点作为数据中转节点,具体规则可以根据实际需要设定。步骤303,若选择增补超级节点作为数据中转节点,则通过增补超级节点为请求中转数据的节点进行数据中转。使用增补超级节点进行数据中转的过程与普通的超级节点是相似的,只不过,在进行具体数据中转前,由于增补超级节点受到NAT或简单防火墙的阻隔, 不能直接将数据包发送给增补超级节点,因此增补超级节点要首先向需要数据 中转的两个节点发送UDP数据包,从而预先建立与所述两个节点之间的数据回 传通道,而后,请求数据中转的两个节点通过与增补超级节点之间建立的数据 回传通道将需要中转的数据发送给增补超级节点,这一发送过程同时也建立了 数据回传的通道,增补超级节点将两个节点发送的需要中转的数据分别向对方 进行转发。下面举个具体的例子,图4为本发明实施例的数据中转系统使用增补超级 节点进行数据中转的具体流程图,如图4所示,在数据中转之前,节点1、节 点2和增补超级节点需要登录P2P服务器,当然,各节点登录P2P服务器的先 后顺序并不是一定的,图中顺序仅为示意。节点1使用增补超级节点进行中转的具体流程包括 步骤401,节点1向P2P服务器请求与节点2进行数据中转。 步骤402, P2P服务器选择一个增补超级节点为数据中转节点,并向增补超 级节点发送节点1和节点2的连接信息,这里的连接信息包括节点1和节点2 的IP地址和端口信息等。步骤403,增补超级节点收到通知后,根据节点1和节点2的IP地址和端 口信息,分别向节点1和节点2发送一个UDP凄史据包,此时由于NAT或者防 火墙阻隔,节点1和节点2将收不到这个UDP数据包,但是通过这个发送过程,增补超级节点在自己的NAT或者防火墙上创建了二个合法的会话,即建立了与 节点1和节点2的lt据回传通道,以后来自节点1和节点2的it据包就可以^皮 增补超级节点收到了。当然,图中是先向节点2发送,后向节点l发送,但实 际上可以同时发送,也可以先发给节点l后发给节点2。发送UDP数据包可以 是一个也可以是多个,可以根据实际需要而定。步骤404,增补超级节点通知P2P服务器已经作好中转准备,可以进行数 据中转。步骤405, P2P服务器将增补超级节点连接信息发送给节点1。这里连接信 息包括超级节点的IP地址和端口信息等。步骤406~418是节点1与节点2通过增补超级节点进行数据中转的具体执 行过程,该过程与采用超级节点进行数据中转的过程相同,这里不再赘述。以上实施例中,节点的IP地址和端口在NAT存在时是指NAT上映射的IP 地址和端口 ,不是节点实际的IP地址和端口 。以上介绍了本发明实施例的数据中转方法,下面将具体介绍本发明实施例 的数据中转系统,图5为本发明实施例的数据中转系统结构图,其特征在于, 该系统包括P2P客户端501和P2P服务器502。P2P客户端501用于判断节点自身的网络类型,若符合预设的增补超级节 点的确定条件,则作为增补超级节点登录P2P服务器502;当作为增补超级节 点登录P2P服务器502,且被P2P服务器502选为数据中转节点时,为请求中 转数据的节点进行数据中转。P2P服务器502用于接受P2P客户端501作为增补超级节点登录,并接收 节点的数据中转请求,根据预设的规则,从超级节点和增补超级节点中选择出 数据中转节点;其中P2P服务器502判断是否有普通超级节点可以作为数据中转节点,若 没有普通超级节点可以作为数据中转节点,则选择增补超级节点作为数据中转 节点。较佳地,当P2P客户端501作为增补超级节点被所述P2P服务器502选为数据中转节点时,用于向需要数据中转的两个节点发送UDP数据包,打开与所述两个节点之间的数据回传通道,需要数据中转的两个节点通过与作为增补超级节点的P2P客户端501之间建立的数据回传通道将需要中转的数据发送给客户端501,作为增补超级节点的P2P客户端501将所述两个节点发送的需要中转的数据进行转发。其中,P2P服务器501包括节点登录模块503和中转节点选择模块504。 节点登录模块503用于接受P2P客户端501作为增补超级节点登录。 中转节点选择模块504用于接收节点的数据中转请求,选择增补超级节点作为数据中转节点。所述中转节点选择模块504,判断是否有普通超级节点可以作为数据中转节点,若没有普通超级节点可以作为数据中转节点,则选择增补超级节点作为数据中转节点。图6为本发明实施例的P2P客户端结构图,如图6所示,该P2P客户端601 运行于节点中,包括网络类型判断模块602和登录模块603。 网络类型判断模块602用于判断节点的网络类型。登录模块603用于在所述网络类型判断模块判断节点的网络类型符合预设 的增补超级节点的确定条件时,则将节点作为增补超级节点登录P2P服务器。登录模块603具体用于在网络类型判断模块判断节点的网络类型为完全圆 锥形NAT、 IP限制圆锥形NAT、端口限制圆锥形NAT或者简单防火墙时,将 节点作为增补超级节点登录P2P服务器。该P2P客户端601还可以包括数据中转4莫块604,用于在所述登录^f莫块将节点作为增补超级节点登录P2P服务器后,若该节点被选择为数据中转节点,则向请求中转数据的两个节点发送UDP数据包,建立与所述两个节点之间的数据回传通道,并利用所述数据回传通道接收所述两个节点发送的需要中转的数 据,并转发出去。由上述的实施例可见,本发明的这种数据中转方法、系统、P2P客户端 及P2P服务器,通过将符合预设的增补超级节点的确定条件的节点,作为增补超级节点登录P2P服务器,并在P2P服务器接收到节点的数据中转请求 时,根据预设的规则,从超级节点和增补超级节点中选择出数据中转节点; 并在选择增补超级节点作为数据中转节点时,通过增补超级节点为请求中转 数据的节点进行数据中转,因此扩展了可用于数据中转的节点的选择范围, 从而提高了 P2P系统的传输性能。所应理解的是,以上所述仅为本发明的较佳实施方式而已,并不用于限 定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等 同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1. 一种数据中转方法,其特征在于,该方法包括点对点P2P客户端判断节点自身的网络类型,若符合预设的增补超级节点的确定条件,则作为增补超级节点登录P2P服务器;P2P服务器接收节点的数据中转请求,根据预设的规则,从超级节点和增补超级节点中选择出数据中转节点;若选择增补超级节点作为数据中转节点,则通过增补超级节点为请求中转数据的节点进行数据中转。
2、 如权利要求1所述的数据中转方法,其特征在于,所述预设的增补超级 节的确定点条件为网络类型为完全圓锥形网络地址转换NAT、因特网协议IP 限制圆锥形NAT、端口限制圆锥形NAT或者简单防火墙。
3、 如权利要求1或2所述的数据中转方法,其特征在于,所述根据预设规则,从超级节点和增补超级节点中选择出数据中转节点,包括判断是否有超级节点可以作为数据中转节点,若没有超级节点可以作为数 据中转节点,则选择增补超级节点作为数据中转节点。
4、 如权利要求1或2所述的数据中转方法,其特征在于,所述通过增补超 级节点为请求中转翁:据的节点进行邀:据中转,包括增补超级节点向请求中转数据的两个节点发送用户数据报协议UDP数据 包,建立与所述两个节点之间的数据回传通道;所述的两个节点通过所述数据回传通道将需要中转的数据发送给增补超级 节点,增补超级节点对所述两个节点发送的需要中转的数据进行转发。
5、 一种数据中转系统,其特征在于,该系统包括P2P客户端,用于判断节点自身的网络类型,若符合预设的增补超级节点 的确定条件,则作为增补超级节点登录P2P服务器;当所述P2P客户端作为增 补超级节点登录P2P服务器,且被所述P2P服务器选为数据中转节点时,为请 求中转数据的节点进行数据中转;P2P服务器,用于接受所述P2P客户端作为增补超级节点登录,并接收节 点的数据中转请求,根据预设的规则,从超级节点和增补超级节点中选择出数 据中转节点。
6、 如权利要求5所述的数据中转系统,其特征在于,所述P2P客户端判断 自身网络类型为完全圆锥形NAT、 IP限制圓锥形NAT、端口限制圆锥形NAT 或者简单防火墙时,将节点作为增补超级节点登录P2P服务器。
7、 如权利要求5或6所述的数据中转系统,其特征在于,所述P2P服务器 判断是否有超级节点可以作为数据中转节点,若没有超级节点可以作为数据中 转节点,则选择增补超级节点作为数据中转节点。
8、 如权利要求5或6所述的数据中转系统,其特征在于,所述P2P客户端 作为增补超级节点被所述P2P服务器选为数据中转节点时,向请求中转数据的 两个节点发送UDP数据包,打开与所述两个节点之间的数据回传通道;两个节点通过所述数据回传通道将需要中转的数据发送给增补超级节点, 增补超级节点对所述两个节点发送的需要中转的数据进行转发。
9、 一种P2P服务器,其特征在于,该P2P服务器包括 节点登录模块,用于接受P2P客户端作为增补超级节点登录; 中转节点选择模块,用于接收节点的数据中转请求,4艮据预设的规则,从超级节点和增补超级节点中选才奪出数据中转节点。
10、 如权利要求9所述的P2P服务器,其特征在于,所述中转节点选择模 块,判断是否有普通超级节点可以作为数据中转节点,若没有普通超级节点可 以作为数据中转节点,则选择增补超级节点作为数据中转节点。
11、 一种P2P客户端,其特征在于,该客户端包括网络类型判断模块,用于判断P2P客户端所处节点的网络类型; 登录模块,用于在所述网络类型判断模块判断所述节点的网络类型符合预设的增补超级节点的确定条件时,将所述节点作为增补超级节点登录P2P服务器。
12、 如权利要求11所述的P2P客户端,其特征在于,所述登录模块,用于在网络类型判断模块判断节点的网络类型为完全圓锥形NAT、 IP限制圓锥形 NAT、端口限制圓锥形NAT或者筒单防火墙时,将所述节点作为增补超级节点 登录P2P服务器。
13、如权利要求11或12所述的P2P客户端,其特征在于,所述客户端还 包括数据中转模块,用于在所述登录模块将所述节点作为增补超级节点登录 P2P服务器后,向请求中转数据的两个节点发送UDP数据包,建立与所述两个 节点之间的数据回传通道,并利用所述数据回传通道接收所述两个节点发送的 需要中转的数据,并进行转发。
全文摘要
本发明公开了一种数据中转方法、系统、P2P客户端及P2P服务器,P2P客户端判断节点自身的网络类型,若符合预设的增补超级节点的确定条件,则作为增补超级节点登录P2P服务器;P2P服务器接收节点的数据中转请求,根据预设的规则,从超级节点和增补超级节点中选择出数据中转节点;若选择增补超级节点作为数据中转节点,则通过增补超级节点为请求中转数据的节点进行数据中转。该方法、系统、P2P客户端及P2P服务器扩展了可用于数据中转的节点的选择范围,从而提高了P2P系统的传输性能。
文档编号H04L12/56GK101282302SQ20081011100
公开日2008年10月8日 申请日期2008年5月29日 优先权日2008年5月29日
发明者王志华, 鹏 胡 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1