一种p2p系统中数据获取方法和装置制造方法
【专利摘要】本发明实施例公开了一种P2P系统数据获取方法和装置,包括:用户节点向服务器发送文件请求,接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;根据节点信息向所述资源节点打洞成功后开始从所述资源节点获取第一分段文件;保存成功节点信息;当准备获取所述目标文件的第二分段文件时,根据保存的成功节点信息从对应的所述资源节点获取所述第二分段文件,可见,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而在等待服务器返回资源节点信息以及向返回的资源节点进行打洞操作时依然有P2P数据可以接收,提高带宽利用率。
【专利说明】一种P2P系统中数据获取方法和装置
【技术领域】
[0001]本发明涉及互联网领域,特别是涉及一种P2P系统中数据获取方法和装置。
【背景技术】
[0002]对等网络(Peer to Peer,P2P)系统中,为方便系统中文件的传输与存储,提高容纳损失的能力,一个完整的文件通常被依次切分为多个独立的分段文件。
[0003]当系统中的用户需要获取一个文件时,只需要依次获取对应的多个分段文件即可,比如说当P2P系统中用户A希望获取一个文件,该文件被切分为两段分别为第一分段文件和第二分段文件,用户A通过发送请求从服务器获取拥有该第一分段文件的用户B的用户信息,但是由于P2P系统中一般都使用网络地址转换(Network Address Translation,NAT)技术,不允许处于NAT设备后的用户B的主机被用户A的外部主机直接连接,想要连接的话用户A需要先穿透用户B的NAT设备,穿透NAT设备的技术被称为打洞,同样,当用户A接收完第一分段文件开始准备接收第二分段文件的时候,需要等待从服务器获取拥有第二子文件的用户C的用户信息,然后还需要完成对用户C的NAT设备的打洞后才能从连接到用户C,接收第二分段文件。
[0004]用户A在每次接收切分后的分段文件时所需要进行等待和打洞的时间里是无P2P数据可以接收的,由此浪费了大量的宽带资源。
【发明内容】
[0005]为了解决上述技术问题,本发明提供了一种P2P系统中数据获取方法和装置,提高了带宽利用率。
[0006]本发明实施例公开了如下技术方案:
[0007]一种P2P系统数据获取方法,该方法包括:
[0008]用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
[0009]所述用户节点接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
[0010]所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作;
[0011]所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
[0012]所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息;
[0013]当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
[0014]优选的,在所述用户节点向服务器发送文件请求之前,还包括:[0015]所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端
口信息;
[0016]相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
[0017]当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
[0018]优选的,在所述用户节点向服务器发送文件请求之前,还包括:
[0019]所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端
口信息;
[0020]相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
[0021]当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作;
[0022]所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
[0023]所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
[0024]优选的,
[0025]所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
[0026]相应的,当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
[0027]优选的,
[0028]所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。
[0029]优选的,
[0030]按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
[0031]优选的,所述当所述用户节点准备获取所述目标文件的第二分段文件时具体为:
[0032]当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
[0033]一种P2P系统数据获取装置,该装置包括:
[0034]发送单元,用于向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
[0035]节点信息接收单元,用于接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
[0036]打洞操作单元,用于根据所述节点信息向一组所述资源节点进行打洞操作;
[0037]第一获取单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
[0038]保存单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作单元打洞操作成功的资源节点的IP地址和端口信息;
[0039]第二获取单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
[0040]优选的,还包括:
[0041]登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
[0042]相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口
信息;
[0043]所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,使得所述资源节点允许获取第二分段文件。
[0044]优选的,还包括:
[0045]登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
[0046]相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口
信息;
[0047]所述第二获取单元,还包括打洞操作子单元、获取子单元和保存子单元;
[0048]所述打洞操作子单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,对所述资源节点重新进行打洞操作;
[0049]所述获取子单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;[0050]所述保存子单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作子单元打洞操作成功的资源节点的IP地址和端口信息。
[0051]优选的,
[0052]所述保存单元所保存的所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
[0053]相应的,所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
[0054]优选的,
[0055]按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
[0056]优选的,
[0057]所述第二获取单元,还用于当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
[0058]由上述技术方案可以看出,一般拥有一个文件的其中一个分段文件的资源节点同样也会拥有该文件的其他分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有P2P数据可以接收,大大提高了带宽利用率。
【专利附图】
【附图说明】
[0059]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0060]图1为本发明一种P2P系统数据获取方法的方法流程图之一;
[0061]图2为本发明一种打洞操作的信令图;
[0062]图3为本发明一种P2P系统数据获取方法的方法流程图之二 ;
[0063]图4为本发明一种P2P系统数据获取方法的方法流程图之三;
[0064]图5为本发明一种P2P系统中数据获取装置的装置结构图之一;
[0065]图6为本发明一种P2P系统中数据获取装置的装置结构图之二 ;
[0066]图7为本发明一种P2P系统中数据获取装置的装置结构图之三。
【具体实施方式】
[0067]本发明实施例提供了一种P2P系统中数据获取方法和装置。现如今,在网络视频行业竞争日益激烈的现状下,各家视频网站都试图通过引入P2P技术节省带宽费用,由于中国网络视频流量的巨大以及带宽费用的高昂,优化P2P技术,提高一个点的带宽节约比,也能为大型视频网站节约很大一笔开销,这里所述的带宽节约比是一种衡量带宽利用率的标准,是总P2P下载数据量/总下载数据量的商,这个值越高越好。在传统的P2P系统中,对每一个分段资源,用户节点都要获取一遍其它资源节点信息(对于用户节点和资源节点需要说明的是,在P2P系统中,一个用户节点在从其他用户节点处下载数据资源的同时,也可以为另一部分用户节点上传数据,而在本发明中所指的用户节点是指进行数据下载的用户节点,所指的资源节点是指进行数据上传的用户节点),再与其它资源节点进行打洞操作,然后才能开始获取数据。在这个过程完成前,P2P下载无P2P数据可收。然而,一般来说,拥有一个文件的其中一个分段文件的资源节点同样也会有很大的几率拥有该文件的其他的分段文件,故用户节点保存在完成打洞操作后从资源节点处获取一个分段文件时该资源节点的成功节点信息,当该用户节点需要获取该文件的另一个分段文件时,通过保存的成功节点信息可以直接连接到该资源节点开始下载对应的数据,从而所述用户节点在等待服务器返回对应该另一个分段文件的资源节点信息以及向返回的资源节点进行打洞操作时依然有数据可以接收,大大提高了带宽利用率。
[0068]在完成对资源节点的打洞操作后,用户节点就通过资源节点的允许下穿透NAT设备与该资源节点建立了数据连接,这种连接是一种互相确认的连接,也就是说用户节点的IP地址和端口信息和资源节点的IP地址和端口信息均不能发生改变,只要没有改变,在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接资源节点下载对应的分段资源,而且即使用户节点或者资源节点的IP地址和端口信息发生了改变,那也可以立刻开始打洞操作,这样也能有效缩短用户节点没有数据可以接收的时间,提高带宽利用率。
[0069]在该用户节点从资源节点处获取一个文件的分段文件时,同时也能获取从该资源节点的下载速度信息(比如说下载速度和平均下载速度),在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的。如果用户节点将下载速度信息作为成功节点信息的一部分进行保存,则在需要使用成功节点信息从所述资源节点处下载同一个文件的另一个分段文件,可以直接使用其中的下载速度信息来分配下载任务,节省了确定出有效下载速度信息的步骤,提高了带宽利用率。
[0070]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。
[0071]实施例一
[0072]请参阅图1,其为本发明一种P2P系统数据获取方法的方法流程图之一,该方法包括以下步骤:
[0073]SlOl:用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符;
[0074]这里需要说明的是,与分段文件唯一对应的标识符可以是哈希值HASH,一般来说,在用户节点向服务器发送文件请求之前,会获得一个有关该目标文件的所有分段文件的标识符列表或集合,用户节点以此得到需要获取的分段文件对应的标识符,并添加到向服务器发送的文件请求中。[0075]S102:所述用户节点接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息;
[0076]首先需要说明的是,在P2P系统中,一个用户节点在从其他用户节点处下载数据资源的同时,也可以为另一部分用户节点上传数据,而在本发明中所指的用户节点是指进行数据下载的用户节点,所指的资源节点是指进行数据上传的用户节点。
[0077]对于本步骤,服务器在接收到文件请求后,根据其中携带的标识符,查找到与本服务器相连的且拥有对应该标识符的分段文件的其他资源节点的节点信息,这里的其他资源节点一般是多个,也就是说返回给用户节点的节点信息更像是该分段文件的种子信息,包含了可以提供该分段文件下载资源的资源节点的必要信息,比如说IP地址、端口信息、NAT类型和ID等。
[0078]S103:所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作;
[0079]S104:所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件;
[0080]需要说明的是,虽然用户节点通过服务器已经获取到了一些资源节点的IP地址和端口信息,但是并不是每个资源节点都能成功连接开始下载的,而打洞成功后所获取的资源节点的IP地址和端口信息可以理解为一种被确认有效的、验证了的IP地址和端口信息,所以在本发明中被定义成功节点信息,或者说是一种被确认能连接的可能性很高的资源节点的节点信息。
[0081]S105:所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息;
[0082]可以将成功节点信息保存在缓存中或其他存储位置,以便在下载与第一分段文件属于同一个文件的第二分段文件时进行调用。
[0083]S106:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
[0084]一般来说,拥有一个文件的其中一个分段文件的资源节点同样也会有很大的几率拥有该文件的其他的分段文件,所以说,在用户节点需要下载目标文件的第二分段文件时,使用已经成功连接下载第一分段文件的资源节点进行对第二分段文件的下载尝试,是非常有必要的,成功率也会是非常高的。不过也不是说用户节点在准备获取第二分段文件是就只进行调用对应成功节点信息,从对应的资源节点进行获取动作而已,用户节点依然同时也会向服务器发送针对第二分段文件的文件请求。然而由于保存了成功节点信息,所以在用户节点等待服务器返回针对第二分段文件的资源节点信息以及用户节点根据节点信息进行打洞操作时,用户节点可以通过调用成功节点信息开始尝试获取第二分段文件的操作,至少可以在等待服务器响应文件请求返回节点信息的时间段内有P2P数据可以接收。
[0085]对于步骤S106来说,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件时,可能会因为网络环境的变化或者其他因素出现至少两种不同的执行情况,不过再对可能出现的至少两种不同的执行情况进行说明之前,需要先针对步骤S103的打洞操作进行展开说明,打洞操作是类似于用户节点通过服务器与资源节点互相确认的一个过程,如图2所示,其为本发明的一种打洞操作的信令图,包括:
[0086]S201是用户节点根据从服务器获取的节点信息向一组中的某个资源节点发送确认请求,所述确认请求用于和资源节点进行打洞前的确认,所述确认请求中包括了用户节点的必要信息,比如说IP地址和端口信息,以及资源节点的地址。
[0087]S202:所述确认请求会首先达到服务器,所述服务器根据其携带的资源节点的地址将所述确认请求转发到对应的所述资源节点。
[0088]S203:所述资源节点在接收到所述确认请求并同意打洞操作后,会保持所述用户节点的IP地址和端口信息用于在打洞操作完成后进行连接时的确认环节,然后将一个用于确认的确认包返回到上述用户节点。
[0089]S204:所述确认包会首先到达服务器,服务器根据确认包携带的用户节点信息将所述确认包转发到对应的所述用户节点。
[0090]以上步骤仅仅是普通的打洞操作的确认过程,有时会根据资源节点的NAT设备的类型不同增加O?4个消息包的来回才能最终确认。在所述用户节点接收到确认包后,将开始进行打洞,穿透所述资源节点的NAT设备与所述资源节点进行直接连接。这种打洞操作在用户节点试图连接陌生资源节点时都需要执行一次。
[0091]从上述打洞操作的展开说明中可以确认的是,两个节点之间能够进行直接连接的必要条件是:一、完成了打洞操作并由此获得了对方的必要信息比如说IP地址和端口信息;二、在进行直接连接前对方当前所使用的IP地址和端口信息与之前保存的IP地址和端口信息是一致的。这样的话,就引出了信息一致和信息不一致的至少这两种情况,以下将分别进行详细的描述。
[0092]对于信息一致的情况,在图1所描述的技术方案的基础上,如图3所示,其为本发明一种P2P系统数据获取方法的方法流程图之二,包括:
[0093]S300:所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
[0094]步骤S301和S302请参照图1所描述的技术方案的步骤SlOl和S102的描述,这里不再赘述。
[0095]S303:当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
[0096]步骤S304和S305请参照图1所描述的技术方案的步骤S104和S105的描述,这里不再赘述。
[0097]S306:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
[0098]这里需要说明的是,在完成对资源节点的打洞操作后,用户节点就通过资源节点的允许下穿透NAT设备与该资源节点建立了数据连接,这种连接是一种互相确认的连接,也就是说用户节点的IP地址和端口信息和资源节点的IP地址和端口信息均不能发生改变,只要没有改变,理论上在下一次所述用户节点连接该资源节点时,就可以免去了打洞的操作,直接连接所述资源节点下载对应的分段资源,而且一般情况下,拥有第一分段文件的资源节点理论上也是拥有第二分段文件的,故在网络环境没有变化的前提下,或者说所述用户节点在从所述资源节点处获取第二分段文件时,达到了步骤S306所描述情况时,就免去了打洞操作,使得所述用户节点可以与所述资源节点直接建立连接,由此不仅在所述用户节点等待服务器返回对应第二分段文件的文件请求的节点信息的时间段,而且甚至在所述用户节点根据服务器返回的节点信息进行打洞操作的过程中,所述用户节点一直都可以通过所述资源节点获取对应第二分段文件的P2P数据,大大提高了带宽利用率。
[0099]对于信息不一致的情况,在图1所描述的技术方案的基础上,如图4所示,其为本发明一种P2P系统数据获取方法的方法流程图之三,包括:
[0100]S400:所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息;
[0101]步骤S401和S402请参照图1所描述的技术方案的步骤SlOl和S102的描述,这里不再赘述。
[0102]S403:当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息;
[0103]步骤S404和S3405请参照图1所描述的技术方案的步骤S104和S105的描述,这里不再赘述。
[0104]S406:当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作;
[0105]这里需要说明的是,当用户节点的网络情况发生改变(比如说断网后重新连接等情况)和/或者资源节点的网络情况发生改变时,就会出现网络情况发生改变的节点的IP地址和端口信息一般会被P2P系统重新分配或者设置,这种情况下,所述用户节点只能重新对所述资源节点进行打洞操作,然后才能重新建立与所述资源节点的直接连接,但是即使是这样,本发明的这种优选的实施例中所述用户节点无P2P数据接收的时间段也仅仅是重新进行打洞操作的时间段,依旧比现有技术中的等待服务器返回节点信息加上进行打洞操作的无P2P数据接收的时间段要短,也就是说依然提高了带宽利用率。
[0106]S407:所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件;
[0107]S408:所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
[0108]也就是说,再一次保存成功节点信息,这样,在获取同一目标文件的另一段分段文件时,步骤S408所保存的成功节点信息同样是被确认有效的、验证了的资源节点的IP地址和端口信息。
[0109]需要注意的是,在P2P系统的下载机制中,P2P系统会根据用户节点从其他资源节点下载数据的下载速度信息来分配下载任务,下载数据的下载速度和平均下载速度越高的分配的下载任务越多。如果用户节点不知道从一个资源节点下载数据的下载速度信息,则需要通过几次数据的来往后才能确定出有效的下载速度信息,而在这几次数据的来往之间的数据传输速度是很低的,对带宽利用率是有较大影响的。基于这种情况,本发明提供了一种优选的实施方式,用户节点将从所述资源节点获取第一分段文件时的速度信息作为成功节点信息一部分进行保存,也就是说,所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息;
[0110]本发明对所述速度信息给出一种优选的范围,所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。选择下载完成第一分段文件时的下载速度作为所述速度信息中的下载速度是因为从下载完成一个文件的那一刻的下载速度首先是最新的下载速度数据,其次也最能反映所述用户节点从所述资源节点获取数据的能力,而且所述用户节点下载完成一个文件的平均速度也是一种有效的参考数据,但是并不代表本发明就将所述速度信息限定为完成获取所述第一分段文件时的下载速度以及平均速度,也可以是其他有效的速度参考数据,本发明对此不进行限定。以下是本发明的一种优选的成功节点信息所携带的内容:
[0111]
【权利要求】
1.一种P2P系统数据获取方法,其特征在于,该方法包括: 用户节点向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符; 所述用户节点接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息; 所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作; 所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件; 所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息; 当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
2.根据权利要求1所述的方法,其特征在于,在所述用户节点向服务器发送文件请求之前,还包括: 所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息; 相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取`并保存所述用户节点的IP地址和端口信息; 当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,所述资源节点允许所述用户节点获取第二分段文件。
3.根据权利要求1所述的方法,其特征在于,在所述用户节点向服务器发送文件请求之前,还包括: 所述用户节点登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息; 相应的,当所述用户节点根据所述节点信息向一组所述资源节点进行打洞操作时,所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息; 当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当所述用户节点用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者所述用户节点当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,所述用户节点对所述资源节点重新进行打洞操作; 所述用户节点根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件; 所述用户节点保存成功节点信息,所述成功节点信息包括所述用户节点打洞操作成功的资源节点的IP地址和端口信息。
4.根据权利要求1所述的方法,其特征在于, 所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息; 相应的,当所述用户节点准备获取所述目标文件的第二分段文件时,所述用户节点根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
5.根据权利要求4所述的方法,其特征在于, 所述速度信息包括所述用户节点从所述资源节点完成获取所述第一分段文件时的下载速度以及平均速度。
6.根据权利要求1至5任意一项所述的方法,其特征在于, 按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
7.根据权利要求6所述的方法,其特征在于,所述当所述用户节点准备获取所述目标文件的第二分段文件时具体为: 当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
8.—种P2P系统数据获取装置,其特征在于,该装置包括: 发送单元,用于向服务器发送文件请求,所述文件请求包括目标文件的第一分段文件唯一对应的标识符; 节点信息接收单元,用于接收所述服务器返回的通过所述标示符确定的至少一组拥有所述第一分段文件的资源节点的节点信息; 打洞操作单元,用于根据所述节点信息向一组所述资源节点进行打洞操作; 第一获取单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第一分段文件; 保存单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作单元打洞操作成功的资源节点的IP地址和端口信息; 第二获取单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息从对应的所述资源节点获取所述第二分段文件。
9.根据权利要求8所述的装置,其特征在于,还包括: 登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息; 相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息; 所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息相同,且当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息相同时,使得所述资源节点允许获取第二分段文件。
10.根据权利要求8所述的装置,其特征在于,还包括: 登录单元,用于在触发所述发送单元之前登录服务器,以使得所述服务器获取所述用户节点的IP地址和端口信息; 相应的,所述打洞操作单元,还用于根据所述节点信息向一组所述资源节点进行打洞操作时,使得所述资源节点从所述服务器获取并保存所述用户节点的IP地址和端口信息; 所述第二获取单元,还包括打洞操作子单元、获取子单元和保存子单元; 所述打洞操作子单元,用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的资源节点的IP地址和端口信息访问所述资源节点,当用于访问的所述资源节点的IP地址和端口信息与所述资源节点当前使用的IP地址和端口信息不相同,或者当前的IP地址和端口信息与所述资源节点所保存的所述用户节点的IP地址和端口信息不相同时,对所述资源节点重新进行打洞操作; 所述获取子单元,用于根据打洞成功后得到的所述资源节点的IP地址和端口信息开始从所述资源节点获取第二分段文件; 所述保存子单元,用于保存成功节点信息,所述成功节点信息包括所述打洞操作子单元打洞操作成功的资源节点的IP地址和端口信息。
11.根据权利要求8所述的装置,其特征在于, 所述保存单元所保存的所述成功节点信息还包括所述用户节点从所述资源节点下载所述第一分段文件的速度信息; 相应的,所述第二获取单元,还用于当准备获取所述目标文件的第二分段文件时,根据保存的所述成功节点信息中的所述速度信息,以相应的下载速度从对应的资源节点获取第二分段文件。
12.根据权利要求8至11任意一项所述的装置,其特征在于, 按照所述目标文件依次切分后得到的分段文件顺序,所述第二分段文件为所述第一分段文件的下一个分段文件。
13.根据权利 要求12所述的装置,其特征在于, 所述第二获取单元,还用于当所述用户节点完成获取第一分段文件时,所述用户节点根据保存的所述成功节点信息向对应的所述资源节点获取所述第二分段文件。
【文档编号】H04L29/08GK103731511SQ201410037531
【公开日】2014年4月16日 申请日期:2014年1月26日 优先权日:2014年1月26日
【发明者】方君君 申请人:飞狐信息技术(天津)有限公司