CN101917488B - 一种bt下载方法、装置及*** - Google Patents

一种bt下载方法、装置及*** Download PDF

Info

Publication number
CN101917488B
CN101917488B CN 201010264494 CN201010264494A CN101917488B CN 101917488 B CN101917488 B CN 101917488B CN 201010264494 CN201010264494 CN 201010264494 CN 201010264494 A CN201010264494 A CN 201010264494A CN 101917488 B CN101917488 B CN 101917488B
Authority
CN
China
Prior art keywords
downloaded
resources
information
burst
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 201010264494
Other languages
English (en)
Other versions
CN101917488A (zh
Inventor
张勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Digital Technologies Chengdu Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN 201010264494 priority Critical patent/CN101917488B/zh
Publication of CN101917488A publication Critical patent/CN101917488A/zh
Application granted granted Critical
Publication of CN101917488B publication Critical patent/CN101917488B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种BT下载方法,包括:获取网络中向索引服务器发送的第一请求数据包;根据解析所述第一请求数据包获得的待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息;接收所述索引服务器返回的客户端列表信息;与所述客户端列表中的至少一个客户端交互,获得所述待下载资源的分片信息,所述待下载资源的分片信息包括分片大小信息;根据所述待下载资源的分片信息从所述至少一个客户端下载所述待下载资源。该下载方法可以在找不到种子文件的情况下实现BT资源的下载,提升了BT资源下载的可靠性。

Description

一种BT下载方法、装置及***
技术领域
本发明涉及通信技术领域,尤其涉及一种BT下载方法、装置及***。 
背景技术
点对点技术(peer-to-peer,简称P2P)又称对等互联网络技术,是相对于客户端/服务器(C/S)模式来说的一种网络信息交换方式。在P2P网络中,每个节点既可以作为客户端从其他节点得到服务,也可以充当服务器向其他节点提供服务。由于P2P网络能够极大缓解传统C/S网络架构中服务器端的压力过大、易出现单一失效点等问题,又能充分利用终端的丰富资源,所以P2P技术被广泛应用于计算机网络的各个应用领域,如分布式科学计算、文件共享、流媒体直播与点播、语音通信及在线游戏支撑平台等方面。 
BT是比特洪流BitTorrent的简称,是一种依赖P2P方式将文件在大量互联网用户之间进行共享与传输的协议,由于其实现简单、使用方便,在中国用户之间被广泛使用。BT中的节点在共享一个文件时,首先将文件分片并将文件和分片信息保存在一个流(Torrent)类型文件(即.torrent文件),该Torrent文件通常被称为种子文件,拥有种子文件的节点被形象地称作种子节点。种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的索引服务器(即Tracker服务器)的地址和针对Tracker 服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的分片,分片大小必须为2k的整数次方(由于是虚拟分片,硬盘上并不产生各个分片文件),并把每个分片的索引信息和Hash验证码写入种子文件中。当用户在下载该文件时,可以根据种子文件的信息,将文件的部分分片下载下来,然后在其他下载该文件的节点之间共享自己已经下载的分片,互通有无,从而实现文件的快速分发。由于每个节点在下载文件的同时也在为其他用户上传该文件的分片,所以整体来看,不会随着用户数的增加而降低下载速度,反而下载的人越多,速度越快。
发明人在实现本发明的过程中,发现现有的BT下载过程中客户端必须先在网络中搜索获取待下载资源的种子文件,然后根据种子文件才能从其他对等节点处下载BT资源,然而,由于拥有BT种子文件的网站经常变动等原因,导致部分BT种子文件难以获取,因而存在大量因无法找到种子文件从而无法下载BT资源的情况。 
发明内容
本发明目的在于提供一种BT下载方法、装置及***,能够在找不到种子文件的情况下实现BT资源下载。 
根据本发明实施例的一方面,提供一种BT下载方法,包括: 
获取网络中的对等节点Peer向索引服务器发送的第一请求数据包; 
根据解析所述第一请求数据包获得的待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息; 
接收所述索引服务器返回的客户端列表信息; 
通过所述待下载资源信息以及从所述客户端列表中的至少一个客户端获得的信息分析确定所述待下载资源的分片信息,所述分片信息包括分片大小信息; 
根据所述分片信息从所述至少一个客户端下载所述待下载资源。 
根据本发明实施例的另一方面,提供一种BT下载装置,包括: 
数据包获取单元,用于获取网络中的对等节点Peer向索引服务器发送的第一请求数据包; 
请求单元,用于根据根据解析所述第一请求数据包获得的所述待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息; 
接收单元,用于接收所述索引服务器返回的客户端列表信息; 
处理单元,用于通过所述待下载资源信息以及从所述客户端列表中的至少 一个客户端获得的信息分析确定所述待下载资源的分片信息,所述待下载资源的分片信息包括分片大小信息; 
下载单元,用于根据所述待下载资源的分片信息从所述至少一个客户端下载所述待下载资源。 
根据本发明实施例的再一方面,提供一种BT下载***,包括索引服务器以及至少两个上述BT下载装置。 
本发明实施例提供的下载方法、装置及***可以通过抓取网络中其他客户端或服务器向索引服务器发送的第一请求数据包,并解析获得索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息等待下载资源信息,根据获得的待下载资源信息构造并向索引服务器发送第二请求数据包,从而获得索引服务器返回的拥有待下载资源的客户端列表信息,并通过与客户端列表中至少一个客户端交互获得待下载资源的分片信息,从而根据待下载资源的分片信息向至少一个客户端下载分片数据,使得在没有获得种子文件的请况下也能够进行BT下载,提升了BT资源下载的可靠性,更好的实现了BT资源的共享。 
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 
图1为本发明实施例提供的一种BT下载方法的流程示意图; 
图2为本发明实施例提供的另一种BT下载方法的流程示意图; 
图3为本发明实施例提供的一种客户端的结构示意图; 
图4为本发明实施例提供的另一种客户端的结构示意图。 
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 
需要说明的是,本发明实施例提供的BT下载方法是一种有别于传统下载方法中必须要获得种子文件才能进行BT资源下载的新的下载方式,本发明实施例提供的BT下载方法在无法获得种子文件的情况下也能进行BT资源的下载。下面将对本发明实施例的方案进行详细描述。 
图1为本发明实施例提供的一种BT下载方法的流程示意图,如图所示,该方法包括: 
步骤100,获取网络中向索引服务器发送的第一请求数据包; 
具体的,可以抓取网络中的对等节点Peer向索引服务器(即Tracker服务器)发送的第一请求数据包,该第一请求数据包为网络中其他客户端或服务器请求索引服务器返回拥有相同待下载资源的客户端列表信息的请求数据包,具体的,该第一请求数据包可以是Get类型的请求数据包,该数据包中可以包括Tracker服务器的地址、待下载资源标识以及待下载资源的大小信息,其中待下载资源标识用于唯一标识待下载资源。 
其中,Tracker服务器是BT下载中必须的角色。一个BT客户端client在下载开始以及下载进行的过程中,要不停的与Tracker服务器进行通信,以报告自己的信息,并获取其它下载客户端client的信息。这种通信是通过HTTP协议进行的,它的过程是这样的: 
client向Tracker服务器发一个HTTP的GET请求,并把它自己的信息放在GET的参数中,这个GET请求的大致意思可以是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb...。 
Tracker服务器对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来(如果已经记录在案,那么就检查是否需要更新),然后将一部分(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个Tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。Client在收到Tracker服务器的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。 
步骤105,根据解析所述第一请求数据包获得的待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息; 
具体的,可以通过解析抓包获得的第一请求数据包获得Tracker地址、待下载资源标识以及待下载资源的大小信息等待下载资源信息,根据获得的待下载资源信息构造第二请求数据包,以向索引服务器请求返回拥有所述待下载资源的客户端列表信息,具体的,该第二请求数据包也可以是Get类型的请求数据包。 
步骤110,接收所述索引服务器返回的客户端列表信息; 
具体的,当索引服务器接收到第二请求数据包后,可以根据第二请求数据包中的待下载资源信息返回拥有该待下载资源的客户端列表信息。需要说明的是,索引服务器返回的客户端列表信息中可以包含拥有该待下载资源的客户端信息,也可以包含拥有该待下载资源的服务器的信息,其中,拥有待下载资源的客户端和服务器都是拥有该待下载资源的对等节点Peer。为了描述方便,本发明实施例以客户端为例进行说明。 
步骤115,从所述客户端列表中的至少一个客户端获得所述待下载资源的分片信息,所述分片信息包括分片大小信息; 
具体的,当接收到所述索引服务器返回的客户端列表信息后,可以通过与该客户端列表中的至少一个客户端进行BT握手交互,接收至少一个客户端在BT握手后返回的待下载资源的分片信息,并根据接收到的待下载资源的分片信息确定待下载资源的分片大小。 
步骤120,根据所述分片信息从所述至少一个客户端下载待下载资源。 
具体的,可以根据确定的待下载资源的分片大小向所述至少一个客户端发送下载请求,从所述至少一个客户端下载待下载资源。 
通过本发明实施例一所述的BT下载方法,可以通过抓取网络中其他客户端或服务器向索引服务器发送的第一请求数据包,并解析第一请求数据包获得索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息等待下载资源信息,构造并向索引服务器发送第二请求数据包,从而获得索引服务器返回的拥有待下载资源的客户端列表信息,并通过与客户端列表中至少一个客户端交互获得待下载资源的分片信息,从而根据待下载资源的分片信息向至少一个客户端下载分片数据,使得在没有获得种子文件的请况下也能够进行BT下 载,提升了BT资源下载的可靠性,更好的实现了BT资源的共享。 
图2为本发明实施例提供的另一种BT下载方法的流程示意图,本发明实施例二以客户端A下载F文件为例进行描述,若客户端A没有在网络中找到F文件的种子文件,则客户端A可以通过本实施例所述的方法下载F文件。如图所示,该方法包括: 
步骤200,客户端A从网络中抓取第一请求数据包; 
具体的,当客户端A要下载待下载资源F时,若其在网络中没有获得F文件的种子文件,可以通过抓包获得网络中下载资源F的其他客户端(例如客户端B)向Tracker服务器发送的第一请求数据包,在本实施例中,该第一请求数据包可以是Get类型的请求数据包,该第一请求数据包的目的是向Tracker 服务器获取拥有待下载资源的其它peer的信息,以便与其它peer通讯下载BT资源。 
例如,客户端B要下载的资源是与客户端A要下载的资源相同,都是要下载文件F,且B在网络中获得了F文件的种子,当B获得种子文件后,会根据获得的种子文件中的相关信息向Tracker服务器发送Get请求数据包,以从Tracker服务器处获得拥有F文件的其他peer的信息,以便与其它peer通讯下载F文件,当客户端A没有获得F文件的种子文件时,可以在网络中通过抓包的方式获得客户端B发送给Tracker服务器的Get请求数据包,本实施例以Get请求数据包为Get announce请求数据包为例进行说明,需要说明的是,Get announce请求是标准的HTTP Get请求,其中,Get announce请求数据包中的参数info_hash用于唯一标识待下载文件,因此,客户端A抓包时,可以根据Get announce请求数据包中的参数值info_hash确定其要获得的Getannounce请求数据包。 
步骤205,客户端A解析第一请求数据包; 
具体的,可以解析客户端B向Tracker服务器发送的Get announce请求数据包,获得Tracker服务器地址、待下载资源的标识以及待下载资源的大小信息。其中,Get announce请求的格式可以为: 
GET announce?info_hash=xxx&download=m&left=n&... 
其中,可以从该Get announce请求数据包的包头中提取Tracker的地址信 息及端口号,根据Get announce参数直接得到待下载资源的标识info_hash,并通过将Get announce参数中的download与left相加得到待下载资源的大小。 
步骤210,客户端A向Tracker服务器发送第二请求数据包; 
具体的,客户端根据步骤205中解析第一请求数据包获得的信息(包括:Tracker服务器的地址信息及端口号、待下载资源的标识info_hash、待下载资源的大小)构造第二请求数据包,并向Tracker服务器发送构造的第二请求数据包,以向Tracker服务器请求获得拥有待下载资源F的peer list信息。其中,本实施例中,第二请求数据包也为Get announce请求数据包。 
步骤215,客户端A接收Tracker服务器返回的客户端列表peer list信息; 
具体的,Tracker服务器接收到客户端A发送的第二请求数据包后,会向客户端A返回参与下载同一个文件例如F的其他下载者的信息peer list。其中返回的peer list信息中包含有各peer的IP地址和端口号。 
需要说明的是,索引服务器返回的客户端列表信息中可以包含拥有该待下载资源的客户端信息,也可以包含拥有该待下载资源的服务器的信息,其中,拥有待下载资源的客户端和服务器都是拥有该待下载资源的对等节点Peer。为了描述方便,本发明实施例以客户端为例进行说明。 
步骤220,客户端A根据peer list信息向至少一个peer发送BT握手请求消息; 
具体的,客户端A可以根据Tracker服务器返回的下载同一个文件的peer 的IP地址和端口号,向其中至少一个peer(例如客户端C)发送握手请求消息,以与其建立连接。通常,客户端A会向所有peer发送BT握手请求消息。 
步骤225,客户端A接收至少一个peer返回的BT握手应答消息,与至少一个peer建立通信连接; 
步骤230,客户端A接收至少一个peer在建立通信连接后发送的待下载资源的位域bitfield消息; 
根据BT协议要求,当下载客户端与其他peer通过握手建立连接后,会立即向对方发送bitfield消息,通报各自拥有的待下载资源的分片情况,如果peer 没有待下载资源的分片,则该peer可以不发送bitfield消息。其中,bitfield消息中包含有三个部分:消息长度Message Length、消息类型Message Type、数 据负载Payload,其中,消息长度Message Length为消息类型Message Type的长度及数据负载Payload的长度之和;bitfield消息中Message Type的值为5,其长度为1字节;数据负载Payload部分实际是一个位图,如果该Peer有待下载资源的某个分片,那么对应的位置置1,否则置0。 
步骤235,客户端A根据待下载资源的大小以及bitfield消息分析确定待下载资源的分片大小; 
根据BT协议要求,当客户端A接收到peer(例如客户端C)在BT握手后发送的待下载资源的bitfield消息后,可以根据该bitfield消息中携带的Message Length减去消息类型Message Type的长度(1字节)获得该peer(例如客户端C)返回的数据Payload的长度。即Payload的长度=Message Length-1。由于Payload中的每一位(bit)标识一个分片,且1个字节等于8位(bit),因此,通过Payload的长度可以确定该peer拥有的待下载资源的分片数在一个首尾相距7个bit的区间内。例如:某个待下载资源共分为9片,需要2个字节来表示(第二个字节只用到一位),而另一个BT资源分为16片,也只需要2个字节来表示,则若解析bitfield消息获得的Payload的长度为2,可以判断出该待下载资源的分片数在9-16片之间。 
由于在步骤205中已经通过解析第一请求数据包获得待下载资源的大小,在本步骤中,可以根据获得的bitfield消息中的Payload的长度推算出该待下载资源的总分片数,并且,由于BT资源的各分片大小一般为2的n次方,例如:32K、64k、128K、256k、512K、1M、2M、4M、8M,因此,在本步骤中可以进一步根据待下载资源的大小以及待下载资源的分片数获得待下载资源的分片大小,具体的,可以用待下载资源大小分别除以分片数区间的两个端值,获得分片大小的一个区间,在分片大小的区间内取2的N次方的值则为该待下载资源的分片大小。例如:若客户端A通过抓取第一请求数据包获得待下载资源F的大小为330K,通过解析peer(例如客户端C)发送的bitfield消息获得Payload的长度为2个字节,并可以推算出该待下载资源F的分片数为9-16片之间,则该待下载资源F的分片大小为在[330K/16,330K/9](即20.6K-36.67K)的区间内的2的N次方的值,则可以在20.6K-36.67K区间取32K为该待下载资源的分片大小。 
步骤240,客户端A根据分析获得的待下载资源的分片大小向至少一个peer发送下载请求; 
具体的,当客户端A获得了待下载资源分片的大小后,可以与所述至少一个peer交互并发送下载请求,实际应用中,当客户端A要从客户端C下载待下载资源分片时,客户端A首先必须将它与客户端C之间的连接设置为interested,其实就是发一个interested消息过去,而客户端C要检查其是否应该给客户端A发送数据,如果客户端C对客户端A是unchoke,那么就可以给客户端A发送unchoke消息,当客户端A接收到客户端C发送的unchoke 消息后,可以向客户端C发送一个Request类型的消息以请求下载具体的分片数据,该Request类型的消息中包括待下载资源分片的索引Piece Index、待下载数据的偏移地址Block Offset以及待下载数据长度Block Length。本领域人员可以知道,客户端A可以将一个分片中的数据分批次进行下载,一次只下载某个分片的部分数据块,也可以一次下载该分片的所有数据。实际应用中,通常客户端在向peer请求资源时,一般不会一次将整个分片一次下载,而是将一个分片分成几个数据块Block来进行下载,一般一个Block为16K,当知道待下载资源的分片大小后,客户端可以根据分片大小划分为多个数据块。其中,Block Offset是数据块在待下载资源的分片内的偏移地址。例如若某个待下载资源的分片大小为32K,以16K为一个数据块对所述待下载资源的分片进行划分,则第一个数据块的偏移地址Block Offset为0,Block Length为16k,第二个数据块的偏移地址Block Offset为16*1024,Block Length也是16K。 
步骤245,客户端A接收至少一个peer根据所述下载请求返回的分片数据。 
具体的,当至少一个peer(例如客户端C)接收到客户端A的Request消息后,可以向客户端A返回一个Piece消息,该Piece消息包含有客户端A请求的待下载资源的分片索引Piece Index、待下载的数据的偏移地址Block Offset以及待下载数据Block Data,其中,所述待下载的数据的偏移地址Block Offset是指待下载的数据块在该分片中的偏移地址。从而使客户端A完成对该待下载资源的下载。 
通过本发明实施例提供的BT下载方法,客户端A在未获得待下载资源的种子文件的情况下,可以通过在网络中抓取下载相同资源的其他客户端发送给Tracker服务器的Get announce请求数据包,并根据解析获得的信息构造并向Tracker服务器发送第二Get announce请求,以获得Tracker服务器返回的拥有待下载资源的peer list信息,通过与至少一个peer交互,获得待下载资源的分片大小,再根据该获得的分片大小向至少一个peer下载待下载资源。从而实现了客户端在没有获得待下载资源的种子文件的情况下也能够进行BT下载,提升了BT资源下载的可靠性,更好的实现了资源的共享。 
图3为本发明实施例提供的一种BT下载装置的结构示意图,如图3所示,所述BT下载装置包括: 
数据包获取单元300,用于获取网络中向索引服务器发送的第一请求数据包; 
具体的,数据包获取单元300可以抓取网络中的其他客户端向索引服务器(即Tracker服务器)发送的第一请求数据包,该第一请求数据包为网络中其他客户端请求索引服务器返回拥有相同待下载资源的客户端列表信息的请求数据包,具体的,该第一请求数据包可以是Get类型的请求数据包,该数据包中可以包括Tracker地址、待下载资源标识以及待下载资源的大小信息,其中待下载资源标识用于唯一标识待下载资源。 
请求单元305,用于根据根据解析所述第一请求数据包获得的所述待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息; 
具体的,请求单元305可以通过解析数据包获取单元300获得的第一请求数据包获得Tracker服务器地址、待下载资源标识以及待下载资源的大小信息等待下载资源信息,根据获得的待下载资源信息构造第二请求数据包,以向索引服务器请求返回拥有所述待下载资源的客户端列表信息,具体的,该第二请求数据包也可以是Get类型的请求数据包。 
接收单元310,用于接收所述索引服务器返回的客户端列表信息; 
具体的,当索引服务器接收到第二请求数据包后,可以根据第二请求数据 包中的待下载资源信息返回拥有该待下载资源的客户端列表信息。接收单元310即用于接收所述索引服务器返回的客户端列表信息。 
处理单元315,用于从所述客户端列表中的至少一个客户端获得所述待下载资源的分片信息,所述待下载资源的分片信息包括分片大小信息; 
具体的,当接收单元310接收到所述索引服务器返回的客户端列表信息后,处理单元315可以通过与该客户端列表中的至少一个客户端进行BT握手交互,接收至少一个客户端在BT握手后返回的待下载资源的分片信息,并根据获得的待下载资源的分片信息确定该待下载资源的分片大小。 
下载单元320,用于根据所述待下载资源的分片信息从所述至少一个客户端下载所述待下载资源。 
具体的,下载单元320可以根据处理单元315确定的待下载资源的分片大小向所述至少一个客户端发送下载请求,从所述至少一个客户端下载待下载资源。 
本发明实施例提供的BT下载装置可以通过抓取网络中其他客户端向索引服务器发送的请求数据包,并解析获得索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息等待下载资源信息,并构造第二请求数据包,从而获得索引服务器返回的拥有待下载资源的客户端列表信息,并通过与客户端列表中至少一个客户端交互获得待下载资源的分片信息,从而根据待下载资源的分片信息向至少一个客户端下载分片数据,使得在没有获得种子文件的请况下也能够进行BT下载,提升了BT资源下载的可靠性,更好的实现了BT资源的共享。 
图4为本发明实施例提供的另一种BT下载装置的结构示意图,如图4所示,该下载装置包括: 
数据包获取单元300,用于获取网络中向索引服务器发送的第一请求数据包; 
具体的,当下载装置要下载待下载资源F时,若其在网络中没有获得F文件的种子文件,可以通过抓包获得网络中下载资源F的其他客户端(例如客户端B)向索引服务器(即Tracker服务器)发送的第一请求数据包,在本实 施例中,该第一请求数据包可以是Get类型的请求数据包,该第一请求数据包的目的是向Tracker服务器获取拥有待下载资源的其它peer的信息,以便与其它peer通讯下载BT资源。 
请求单元305,用于根据根据解析所述第一请求数据包获得的所述待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息; 
具体的,所述请求单元305可以包括: 
解析子单元3051,用于解析所述数据包获取单元300获得的第一请求数据包获得待下载资源信息; 
其中,所述待下载资源信息包括索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息。 
请求子单元3052,用于根据所述解析子单元3051解析获得的待下载资源信息向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息。 
接收单元310,用于接收所述索引服务器返回的客户端列表信息; 
具体的,Tracker服务器接收到请求子单元3052发送的第二请求数据包后,会向客户端返回参与下载同一个文件例如F的其他下载者的信息peer list。其中返回的peer list信息中包含有各peer的IP地址和端口号,接收单元310用于接收Tracker返回的peer list信息。 
处理单元315,用于从所述客户端列表中的至少一个客户端获得所述待下载资源的分片信息,所述待下载资源的分片信息包括分片大小信息; 
下载单元320,用于根据所述待下载资源的分片信息从所述至少一个客户端下载所述待下载资源。 
具体的,下载单元320可以根据分析处理单元315分析确定待下载资源的分片大小信息向所述客户端列表中的至少一个peer发送下载请求,并接收所述至少一个peer在接收到下载请求后返回的分片数据。其中,该下载请求具体可以为Request类型的请求消息,Request类型的消息中包括待下载资源分片的索引Piece Index、待下载数据的偏移地址Block Offset以及待下载数据长 度Block Length。所述至少一个peer在接收到下载请求后返回的分片数据可以包含在Piece消息中,其中,所述Piece消息包含有客户端A请求的待下载资源的分片索引Piece Index、待下载的数据的偏移地址Block Offset以及待下载数据Block Data。 
本领域人员可以知道,下载单元320可以将一个分片中的数据分批次进行下载,一次只下载某个分片的部分数据,也可以一次下载该分片的所有数据。实际应用中,通常客户端在向peer请求资源时,一般不会一次将整个分片一次下载,而是将一个分片分成几个数据块Block来进行下载,一般一个Block 为16K,当知道待下载资源的分片大小后,客户端可以根据分片大小划分为多个数据块。其中,Block Offset是数据块在待下载资源的分片内的偏移地址。例如若某个待下载资源的分片大小为32K,以16K为一个数据块对所述待下载资源的分片进行划分,则第一个数据块的偏移地址Block Offset为0,Block Length为16k,第二个数据块的偏移地址Block Offset为16*1024,Block Length也是16K。 
进一步的,在本发明又一个实施例提供的BT下载装置中,包括数据包获取单元300、请求单元305、接收单元310、处理单元315以及下载单元320,其中,所述数据包获取单元300、请求单元305、接收单元310以及下载单元320可以参见前述实施例的描述,如图4所示,所述处理单元315可以包括: 
连接建立子单元3151,用于与所述客户端列表中的至少一个客户端建立通信连接; 
具体的,可以根据peer list信息向至少一个peer发送BT握手请求消息,并接收至少一个peer返回的BT握手应答消息,与至少一个peer建立通信连接。通常,客户端A会向所有peer发送BT握手请求消息。 
接收子单元3152,用于接收至少一个peer在建立通信连接后发送的待下载资源的位域bitfield消息; 
具体的,根据BT协议要求,当下载客户端与其他peer通过握手建立连接后,会立即向对方发送bitfield消息,通报各自拥有的待下载资源的分片情况,如果peer没有待下载资源的分片,则该peer可以不发送bitfield消息。其中,bitfield消息中包含有三个部分:消息长度Message Length、消息类型Message  Type、数据负载Payload,其中,消息长度Message Length为消息类型Message Type的长度及数据负载Payload的长度之和;bitfield消息中Message Type的值为5,其长度为1字节;数据负载Payload部分实际是一个位图,如果该Peer 有待下载资源的某个分片,那么对应的位置置1,否则置0。 
分析处理子单元3153,用于根据待下载资源的大小以及位域bitfield消息分析确定待下载资源的分片大小。 
具体的,当接收子单元3152接收到peer list中至少一个peer发送的位域bitfield消息后,分析处理子单元3153可以根据获得的bitfield消息以及解析子单元3051解析获得的待下载资源的大小信息分析获得所述待下载资源的分片大小等分片信息。 
具体的,由于根据BT协议要求,根据该bitfield消息中携带的Message Length减去消息类型Message Type的长度(1字节)获得该peer(例如客户端C)返回的数据Payload的长度,即Payload的长度=Message Length-1。由于Payload中的每一位(bit)标识一个分片,且1个字节等于8位(bit),因此,分析处理子单元3153可以根据获得的bitfield消息确定出该bitfield消息中携带的Payload的长度,并根据确定的Payload的长度进一步确定该peer拥有的待下载资源的分片数区间。例如:某个待下载资源共分为9片,需要2个字节来表示(第二个字节只用到一位),而另一个BT资源分为16片,也只需要2个字节来表示,则若解析bitfield消息获得的Payload的长度为2,可以判断出该待下载资源的分片数在9-16片之间。 
进一步的,当分析处理子单元3153可以根据解析子单元3051解析获得的待下载资源的大小信息以及前述分析获得的待下载资源的分片数区间确定所述待下载资源的分片大小,具体的,由于BT资源的各分片大小一般为2的n次方,例如:32K、64k、128K、256k、512K、1M、2M、4M、8M,因此,分析处理子单元3153可以用待下载资源大小分别除以分片数区间的两个端值,获得分片大小的一个区间,在分片大小的区间内取2的N次方的值则为该待下载资源的分片大小。例如:若解析子单元3051解析所述数据包获取单元300抓取的第一请求数据包获得待下载资源F的大小为330K,分析处理子单元3153通过解析peer(例如客户端C)发送的bitfield消息获得Payload的 长度为2个字节,则可以推算出该待下载资源F的分片数为9-16片之间,且该分片大小为在[330K/16,330K/9](即20.6K-36.67K)的区间内的2的N次方的值,则可以在20.6K-36.67K区间取32K为该待下载资源的大小。 
本发明实施例提供的BT下载装置在未获得待下载资源的种子文件的情况下,可以通过在网络中抓取下载相同资源的其他客户端发送给索引服务器的第一请求数据包,并根据解析获得的待下载资源信息构造第二请求数据包,并向索引服务器发送第二请求数据包,以获得索引服务器返回的拥有待下载资源的peer list信息,通过与peer list信息中至少一个peer交互,获得待下载资源的分片大小,再根据该获得的分片大小向至少一个peer下载待下载资源。从而实现了在没有获得待下载资源的种子文件的情况下也能够进行BT下载,提升了BT资源下载的可靠性,更好的实现了资源的共享。 
需要说明的是,上述实施例中的BT下载装置可以是指客户端,也可以是指服务器,也可以只是应用于客户端或服务器中的一个模块,只要是能够实现下载BT资源的装置即可。 
在实际应用中,上述实施例提供的BT下载方法及BT下载装置可以应用于下载***中,进一步的,本发明实施例也提供一种BT下载***,可以包括索引服务器(Tracker服务器)以及至少两个如前述实施例所述BT下载装置。 
此外,在实际应用中,上述实施例提供的BT下载方法及BT下载装置可以应用于缓存***中,具体的,可以将缓存***不只在运营端的骨干网上,通过抓取网络上的数据包,并对抓取的数据包进行分析,找出热门的BT资源,通过本发明实施例所述的下载方法或下载装置从外网中进行下载该热点的BT资源并进行缓存,以供内网用户下载使用。当内网用户下载缓存的热点BT资源时,缓存***可以通过重定向将内网用户的下载请求重定向到缓存***的Tracker服务器上,由缓存***的Tracker服务器向内网用户返回所述热点BT资源的客户端或服务器列表。从而使缓存***能够字段发现网络中的热点资源,并通过上述下载方法在无法从外网中获取热点资源的种子文件时也能下载并缓存热点资源,并为内网用户提供下载服务。从而减轻了网间流量,节省了出口带宽,提高了用户下载速度及下载体验。 
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述 为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。 
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。 
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。 
以上所述仅为本发明的几个实施例,可以理解的是,对本领域普通技术人员来说,可以根据本发明实施例的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。 

Claims (3)

1.一种比特洪流BT下载方法,其特征在于,包括:
获取网络中的对等节点Peer向索引服务器发送的第一请求数据包;
根据解析所述第一请求数据包获得的待下载资源信息,向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息,所述待下载资源信息包括索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息;
接收所述索引服务器返回的客户端列表信息;
通过所述待下载资源信息以及从所述客户端列表中的至少一个客户端获得的信息分析确定所述待下载资源的分片信息,所述分片信息包括分片大小信息;
根据所述分片信息从所述至少一个客户端下载所述待下载资源;
其中,所述通过所述待下载资源信息以及从所述客户端列表中的至少一个客户端获得的信息分析确定所述待下载资源的分片信息包括:
与所述至少一个客户端进行建立通信连接;
接收至少一个客户端在建立通信连接后发送的位域bitfield消息;
根据所述bitfield消息中的数据负载Payload长度获得待下载资源的分片数量信息,所述分片数量信息为分片数量区间;
根据所述待下载资源的大小以及所述待下载资源的分片数量区间获得所述待下载资源的分片大小区间,将所述分片大小区间内为2的N次方的值确定为所述待下载资源分片大小。
2.一种BT下载装置,其特征在于,包括:
数据包获取单元,用于获取网络中的对等节点Peer向索引服务器发送的第一请求数据包;
请求单元,用于根据根据解析所述第一请求数据包获得的待下载资源信息,向所述索引服务器发送第二请求数据包,所述第二请求数据包用于向索引服务器请求拥有所述待下载资源的客户端列表信息,其中,所述待下载资源信息包括索引服务器的地址、待下载资源标识以及所述待下载资源的大小信息;
接收单元,用于接收所述索引服务器返回的客户端列表信息;
处理单元,用于通过所述待下载资源信息以及从所述客户端列表中的至少一个客户端获得的信息分析确定所述待下载资源的分片信息,所述分片信息包括分片大小信息;
下载单元,用于根据所述分片信息从所述至少一个客户端下载所述待下载资源;
其中,所述处理单元包括:
连接建立子单元,用于与所述客户端列表中的至少一个客户端建立通信连接;
接收子单元,用于接收至少一个客户端在建立通信连接后发送的待下载资源的位域bitfield消息;
分析处理子单元,用于根据所述bitfield消息的数据负载Payload长度获得所述待下载资源的分片数量信息,所述分片数量信息为分片数量区间,并根据所述待下载资源的大小以及所述待下载资源的分片数量区间获得所述待下载资源的分片大小区间,将所述分片大小区间内为2的N次方的值确定为所述待下载资源分片大小。
3.一种BT下载***,其特征在于,包括索引服务器以及至少两个如权利要求2所述的下载装置。
CN 201010264494 2010-08-20 2010-08-20 一种bt下载方法、装置及*** Expired - Fee Related CN101917488B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010264494 CN101917488B (zh) 2010-08-20 2010-08-20 一种bt下载方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010264494 CN101917488B (zh) 2010-08-20 2010-08-20 一种bt下载方法、装置及***

Publications (2)

Publication Number Publication Date
CN101917488A CN101917488A (zh) 2010-12-15
CN101917488B true CN101917488B (zh) 2013-09-11

Family

ID=43324870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010264494 Expired - Fee Related CN101917488B (zh) 2010-08-20 2010-08-20 一种bt下载方法、装置及***

Country Status (1)

Country Link
CN (1) CN101917488B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130963B (zh) * 2011-04-08 2014-02-05 北京奇艺世纪科技有限公司 客户端网络中存储文件的方法、装置和***
CN102130964B (zh) * 2011-04-11 2013-04-24 华为数字技术(成都)有限公司 获取比特洪流种子文件的方法以及相关装置
CN103220308B (zh) * 2012-01-19 2018-07-03 腾讯科技(深圳)有限公司 一种文件下载方法、装置及***
CN102664813B (zh) * 2012-05-17 2014-12-03 重庆邮电大学 一种p2p流量本地化***及方法
CN104811750A (zh) * 2014-01-23 2015-07-29 北京风行在线技术有限公司 一种在p2p的节点中用于播放视频的方法、装置和***
US9635077B2 (en) * 2014-03-14 2017-04-25 Adobe Systems Incorporated Low latency live video streaming
CN105208067A (zh) * 2014-06-26 2015-12-30 格瑞菲技术有限公司 异步多源流式传输
CN104168539A (zh) * 2014-08-06 2014-11-26 无锡高联信息技术有限公司 基于lte***的信息交互与推送方法
CN104572839A (zh) * 2014-12-11 2015-04-29 百度在线网络技术(北京)有限公司 一种资源文件的检索方法及***
CN106161549B (zh) * 2015-04-15 2020-02-11 阿里巴巴集团控股有限公司 一种数据传输的方法、***、控制服务器及客户端
CN105656986A (zh) * 2015-11-26 2016-06-08 乐视云计算有限公司 一种直播视频的播放方法、装置及***
BR112018015251B1 (pt) * 2016-03-31 2023-04-11 Toshiba Mitsubishi-Electric Industrial Systems Corporation Dispositivo de reprodução de dados para um sistema de controle de monitoramento de fábrica
CN107770209B (zh) * 2016-08-16 2021-04-16 中兴通讯股份有限公司 资源共享方法和装置
CN112491972A (zh) 2018-06-11 2021-03-12 华为技术有限公司 资源获取、分发、下载方法、装置、设备及存储介质
CN108964845B (zh) 2018-07-03 2021-04-16 网宿科技股份有限公司 一种获取bt资源信息的方法和设备
CN108881034B (zh) * 2018-07-03 2021-07-09 网宿科技股份有限公司 一种应用于bt***的请求响应方法、设备及***
CN110430274A (zh) * 2019-08-09 2019-11-08 西藏宁算科技集团有限公司 一种基于云存储的文件下载方法及***
CN114513499A (zh) * 2022-01-25 2022-05-17 统信软件技术有限公司 一种文件下载方法、下载装置及计算设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1791213A (zh) * 2005-12-27 2006-06-21 北京邮电大学 一种性能优化的移动视频点播业务***及实现方法
EP2088719A1 (en) * 2007-05-21 2009-08-12 Huawei Technologies Co., Ltd. Method, device and system for distributing file data
EP2112788A1 (en) * 2007-03-28 2009-10-28 Huawei Technologies Co., Ltd. A method, system and nodes for p2p content sharing
CN101577695A (zh) * 2008-05-09 2009-11-11 上海未来宽带技术及应用工程研究中心有限公司 基于p2p技术的数据下载方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1791213A (zh) * 2005-12-27 2006-06-21 北京邮电大学 一种性能优化的移动视频点播业务***及实现方法
EP2112788A1 (en) * 2007-03-28 2009-10-28 Huawei Technologies Co., Ltd. A method, system and nodes for p2p content sharing
EP2088719A1 (en) * 2007-05-21 2009-08-12 Huawei Technologies Co., Ltd. Method, device and system for distributing file data
CN101577695A (zh) * 2008-05-09 2009-11-11 上海未来宽带技术及应用工程研究中心有限公司 基于p2p技术的数据下载方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BitTorrent原理与算法研究及其性能优化;王展明;《中国优秀硕士学位论文全文数据库·信息科技辑》;20071215(第6期);第5-18页,特别是第2.1.3, 2.1.4节、图2.2 *
王展明.BitTorrent原理与算法研究及其性能优化.《中国优秀硕士学位论文全文数据库·信息科技辑》.2007,(第6期),第5-18页,特别是第2.1.3,2.1.4节、图2.2.

Also Published As

Publication number Publication date
CN101917488A (zh) 2010-12-15

Similar Documents

Publication Publication Date Title
CN101917488B (zh) 一种bt下载方法、装置及***
CN107094176B (zh) 用于对计算机网络上的数据通信进行缓存的方法和***
US9204180B2 (en) Method, server and terminal for audio and video on demand
CN110392071B (zh) 流媒体资源的上传、下载方法、分发***及流媒体服务器
CN104581374B (zh) 一种获取切片文件和生成子m3u8文件的方法、节点及服务器
CN108259542B (zh) 资源的传输方法和装置
CN106549878B (zh) 一种业务分流方法和装置
EP2773080A1 (en) Sharing control system and method for network resources download information
EP3439239A1 (en) Data transmission method and system based on peer-to-peer network
CN110430274A (zh) 一种基于云存储的文件下载方法及***
CN103731472B (zh) 采用p2p技术下载文件的方法和***、客户端
CN102739717B (zh) 下载方法、下载代理服务器和网络***
CN102693297B (zh) 数据处理方法、节点和提取、转换和加载etl***
CN110392020B (zh) 一种流媒体资源的传输方法及***
CN101997822A (zh) 一种流媒体内容分发方法、***和设备
JP2016525256A (ja) 冗長データアクセスを提供するための方法および装置
CN113422728A (zh) 内容分发网络链路的选择方法及装置
KR100929031B1 (ko) 파일 병렬 다운로드에서의 블록 선택 방법, 이를 이용한파일 병렬 다운로드 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체
WO2016180284A1 (zh) 服务节点分配方法、装置、cdn管理服务器及***
EP2634998A1 (en) Method and system for downloading real-time streaming media in peer-to-peer network
CN110519656A (zh) 自适应流媒体的播放方法、***以及服务器
CN103533048B (zh) 一种bt网络中热门种子文件获取方法
CN105847396A (zh) 数据传输的方法及设备
CN103685469B (zh) 基于p2p的文件下载方法和***及客户端
CN106060155B (zh) P2p资源共享的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: B Park No. 88 high science and Technology University of Electronic Science and technology of Sichuan province 611731 Chengdu high tech Zone West Park area Qingshui River Tianchen Road No. 1 building

Applicant after: Huawei Symantec Technologies Co., Ltd.

Address before: B Park No. 88 high science and Technology University of Electronic Science and technology of Sichuan province 611731 Chengdu high tech Zone West Park area Qingshui River Tianchen Road No. 1 building

Applicant before: Chengdu Huawei Symantec Technologies Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD. TO: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130911

Termination date: 20190820

CF01 Termination of patent right due to non-payment of annual fee