欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種bt下載方法、裝置及系統(tǒng)的制作方法

文檔序號:7758222閱讀:156來源:國知局
專利名稱:一種bt下載方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種BT下載方法、裝置及系統(tǒng)。
背景技術(shù)
點對點技術(shù)(peer-to-peer,簡稱P2P)又稱對等互聯(lián)網(wǎng)絡(luò)技術(shù),是相對于客戶端/ 服務(wù)器(C/S)模式來說的一種網(wǎng)絡(luò)信息交換方式。在P2P網(wǎng)絡(luò)中,每個節(jié)點既可以作為客 戶端從其他節(jié)點得到服務(wù),也可以充當(dāng)服務(wù)器向其他節(jié)點提供服務(wù)。由于P2P網(wǎng)絡(luò)能夠極 大緩解傳統(tǒng)C/S網(wǎng)絡(luò)架構(gòu)中服務(wù)器端的壓力過大、易出現(xiàn)單一失效點等問題,又能充分利 用終端的豐富資源,所以P2P技術(shù)被廣泛應(yīng)用于計算機網(wǎng)絡(luò)的各個應(yīng)用領(lǐng)域,如分布式科 學(xué)計算、文件共享、流媒體直播與點播、語音通信及在線游戲支撐平臺等方面。BT是比特洪流BitTorrent的簡稱,是一種依賴P2P方式將文件在大量互聯(lián)網(wǎng) 用戶之間進行共享與傳輸?shù)膮f(xié)議,由于其實現(xiàn)簡單、使用方便,在中國用戶之間被廣泛使 用。BT中的節(jié)點在共享一個文件時,首先將文件分片并將文件和分片信息保存在一個流 (Torrent)類型文件(即.torrent文件),該Torrent文件通常被稱為種子文件,擁有種子 文件的節(jié)點被形象地稱作種子節(jié)點。種子文件本質(zhì)上是文本文件,包含Tracker信息和文 件信息兩部分。Tracker信息主要是BT下載中需要用到的索引服務(wù)器(即Tracker服務(wù) 器)的地址和針對Tracker服務(wù)器的設(shè)置,文件信息是根據(jù)對目標(biāo)文件的計算生成的,計 算結(jié)果根據(jù)BitTorrent協(xié)議內(nèi)的B編碼規(guī)則進行編碼。它的主要原理是需要把提供下載 的文件虛擬分成大小相等的分片,分片大小必須為2k的整數(shù)次方(由于是虛擬分片,硬盤 上并不產(chǎn)生各個分片文件),并把每個分片的索引信息和Hash驗證碼寫入種子文件中。當(dāng) 用戶在下載該文件時,可以根據(jù)種子文件的信息,將文件的部分分片下載下來,然后在其他 下載該文件的節(jié)點之間共享自己已經(jīng)下載的分片,互通有無,從而實現(xiàn)文件的快速分發(fā)。由 于每個節(jié)點在下載文件的同時也在為其他用戶上傳該文件的分片,所以整體來看,不會隨 著用戶數(shù)的增加而降低下載速度,反而下載的人越多,速度越快。發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有的BT下載過程中客戶端必須先在網(wǎng)絡(luò) 中搜索獲取待下載資源的種子文件,然后根據(jù)種子文件才能從其他對等節(jié)點處下載BT資 源,然而,由于擁有BT種子文件的網(wǎng)站經(jīng)常變動等原因,導(dǎo)致部分BT種子文件難以獲取,因 而存在大量因無法找到種子文件從而無法下載BT資源的情況。

發(fā)明內(nèi)容
本發(fā)明目的在于提供一種BT下載方法、裝置及系統(tǒng),能夠在找不到種子文件的情 況下實現(xiàn)BT資源下載。根據(jù)本發(fā)明實施例的一方面,提供一種BT下載方法,包括獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;根據(jù)解析所述第一請求數(shù)據(jù)包獲得的待下載資源信息向所述索引服務(wù)器發(fā)送第 二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所述待下載資源的客戶端
4列表信息;接收所述索引服務(wù)器返回的客戶端列表信息;從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分片信息,所述分 片信息包括分片大小信息;根據(jù)所述分片信息從所述至少一個客戶端下載所述待下載資源。根據(jù)本發(fā)明實施例的另一方面,提供一種BT下載裝置,包括數(shù)據(jù)包獲取單元,用于獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;請求單元,用于根據(jù)根據(jù)解析所述第一請求數(shù)據(jù)包獲得的所述待下載資源信息向 所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所 述待下載資源的客戶端列表信息;接收單元,用于接收所述索引服務(wù)器返回的客戶端列表信息;處理單元,用于從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分 片信息,所述待下載資源的分片信息包括分片大小信息;下載單元,用于根據(jù)所述待下載資源的分片信息從所述至少一個客戶端下載所述 待下載資源。根據(jù)本發(fā)明實施例的再一方面,提供一種BT下載系統(tǒng),包括索引服務(wù)器以及至少 兩個上述BT下載裝置。本發(fā)明實施例提供的下載方法、裝置及系統(tǒng)可以通過抓取網(wǎng)絡(luò)中其他客戶端或服 務(wù)器向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包,并解析獲得索引服務(wù)器的地址、待下載資源標(biāo) 識以及所述待下載資源的大小信息等待下載資源信息,根據(jù)獲得的待下載資源信息構(gòu)造并 向索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,從而獲得索引服務(wù)器返回的擁有待下載資源的客戶端 列表信息,并通過與客戶端列表中至少一個客戶端交互獲得待下載資源的分片信息,從而 根據(jù)待下載資源的分片信息向至少一個客戶端下載分片數(shù)據(jù),使得在沒有獲得種子文件的 請況下也能夠進行BT下載,提升了 BT資源下載的可靠性,更好的實現(xiàn)了 BT資源的共享。


為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其 他的附圖。圖1為本發(fā)明實施例提供的一種BT下載方法的流程示意圖;圖2為本發(fā)明實施例提供的另一種BT下載方法的流程示意圖;圖3為本發(fā)明實施例提供的一種客戶端的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例提供的另一種客戶端的結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于 本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。需要說明的是,本發(fā)明實施例提供的BT下載方法是一種有別于傳統(tǒng)下載方法中 必須要獲得種子文件才能進行BT資源下載的新的下載方式,本發(fā)明實施例提供的BT下載 方法在無法獲得種子文件的情況下也能進行BT資源的下載。下面將對本發(fā)明實施例的方 案進行詳細(xì)描述。圖1為本發(fā)明實施例提供的一種BT下載方法的流程示意圖,如圖所示,該方法包 括步驟100,獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;具體的,可以抓取網(wǎng)絡(luò)中的對等節(jié)點Peer向索引服務(wù)器(即Tracker服務(wù)器)發(fā) 送的第一請求數(shù)據(jù)包,該第一請求數(shù)據(jù)包為網(wǎng)絡(luò)中其他客戶端或服務(wù)器請求索引服務(wù)器返 回?fù)碛邢嗤螺d資源的客戶端列表信息的請求數(shù)據(jù)包,具體的,該第一請求數(shù)據(jù)包可以 是Get類型的請求數(shù)據(jù)包,該數(shù)據(jù)包中可以包括Tracker服務(wù)器的地址、待下載資源標(biāo)識以 及待下載資源的大小信息,其中待下載資源標(biāo)識用于唯一標(biāo)識待下載資源。其中,Tracker服務(wù)器是BT下載中必須的角色。一個BT客戶端client在下載開 始以及下載進行的過程中,要不停的與Tracker服務(wù)器進行通信,以報告自己的信息,并獲 取其它下載客戶端client的信息。這種通信是通過HTTP協(xié)議進行的,它的過程是這樣的client向Tracker服務(wù)器發(fā)一個HTTP的GET請求,并把它自己的信息放在GET的 參數(shù)中,這個GET請求的大致意思可以是我是XXX( —個唯一的id),我想下載yyy文件, 我的ip是aaa,我用的端口是bbb...。Tracker服務(wù)器對所有下載者的信息進行維護,當(dāng)它收到一個請求后,首先把對方 的信息記錄下來(如果已經(jīng)記錄在案,那么就檢查是否需要更新),然后將一部分(并非全 部,根據(jù)設(shè)置的參數(shù)已經(jīng)下載者的請求)參與下載同一個文件(一個Tracker服務(wù)器可能 同時維護多個文件的下載)的下載者的信息返回給對方。Client在收到Tracker服務(wù)器 的響應(yīng)后,就能獲取其它下載者的信息,那么它就可以根據(jù)這些信息,與其它下載者建立連 接,從它們那里下載文件片斷。步驟105,根據(jù)解析所述第一請求數(shù)據(jù)包獲得的待下載資源信息向所述索引服務(wù) 器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所述待下載資源 的客戶端列表信息;具體的,可以通過解析抓包獲得的第一請求數(shù)據(jù)包獲得Tracker地址、待下載資 源標(biāo)識以及待下載資源的大小信息等待下載資源信息,根據(jù)獲得的待下載資源信息構(gòu)造第 二請求數(shù)據(jù)包,以向索引服務(wù)器請求返回?fù)碛兴龃螺d資源的客戶端列表信息,具體的, 該第二請求數(shù)據(jù)包也可以是Get類型的請求數(shù)據(jù)包。步驟110,接收所述索引服務(wù)器返回的客戶端列表信息;具體的,當(dāng)索引服務(wù)器接收到第二請求數(shù)據(jù)包后,可以根據(jù)第二請求數(shù)據(jù)包中的 待下載資源信息返回?fù)碛性摯螺d資源的客戶端列表信息。需要說明的是,索引服務(wù)器返 回的客戶端列表信息中可以包含擁有該待下載資源的客戶端信息,也可以包含擁有該待下 載資源的服務(wù)器的信息,其中,擁有待下載資源的客戶端和服務(wù)器都是擁有該待下載資源 的對等節(jié)點Peer。為了描述方便,本發(fā)明實施例以客戶端為例進行說明。步驟115,從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分片信息,所述分片信息包括分片大小信息; 具體的,當(dāng)接收到所述索引服務(wù)器返回的客戶端列表信息后,可以通過與該客戶 端列表中的至少一個客戶端進行BT握手交互,接收至少一個客戶端在BT握手后返回的 待下載資源的分片信息,并根據(jù)接收到的待下載資源的分片信息確定待下載資源的分片大步驟120,根據(jù)所述分片信息從所述至少一個客戶端下載待下載資源。具體的,可以根據(jù)確定的待下載資源的分片大小向所述至少一個客戶端發(fā)送下載 請求,從所述至少一個客戶端下載待下載資源。通過本發(fā)明實施例一所述的BT下載方法,可以通過抓取網(wǎng)絡(luò)中其他客戶端或服 務(wù)器向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包,并解析第一請求數(shù)據(jù)包獲得索引服務(wù)器的地 址、待下載資源標(biāo)識以及所述待下載資源的大小信息等待下載資源信息,構(gòu)造并向索引服 務(wù)器發(fā)送第二請求數(shù)據(jù)包,從而獲得索引服務(wù)器返回的擁有待下載資源的客戶端列表信 息,并通過與客戶端列表中至少一個客戶端交互獲得待下載資源的分片信息,從而根據(jù)待 下載資源的分片信息向至少一個客戶端下載分片數(shù)據(jù),使得在沒有獲得種子文件的請況下 也能夠進行BT下載,提升了 BT資源下載的可靠性,更好的實現(xiàn)了 BT資源的共享。圖2為本發(fā)明實施例提供的另一種BT下載方法的流程示意圖,本發(fā)明實施例二以 客戶端A下載F文件為例進行描述,若客戶端A沒有在網(wǎng)絡(luò)中找到F文件的種子文件,則客 戶端A可以通過本實施例所述的方法下載F文件。如圖所示,該方法包括步驟200,客戶端A從網(wǎng)絡(luò)中抓取第一請求數(shù)據(jù)包;具體的,當(dāng)客戶端A要下載待下載資源F時,若其在網(wǎng)絡(luò)中沒有獲得F文件的種子 文件,可以通過抓包獲得網(wǎng)絡(luò)中下載資源F的其他客戶端(例如客戶端B)向Tracker服務(wù) 器發(fā)送的第一請求數(shù)據(jù)包,在本實施例中,該第一請求數(shù)據(jù)包可以是Get類型的請求數(shù)據(jù) 包,該第一請求數(shù)據(jù)包的目的是向Tracker服務(wù)器獲取擁有待下載資源的其它peer的信 息,以便與其它peer通訊下載BT資源。例如,客戶端B要下載的資源是與客戶端A要下載的資源相同,都是要下載文件 F,且B在網(wǎng)絡(luò)中獲得了 F文件的種子,當(dāng)B獲得種子文件后,會根據(jù)獲得的種子文件中的相 關(guān)信息向Tracker服務(wù)器發(fā)送Get請求數(shù)據(jù)包,以從Tracker服務(wù)器處獲得擁有F文件的 其他peer的信息,以便與其它peer通訊下載F文件,當(dāng)客戶端A沒有獲得F文件的種子 文件時,可以在網(wǎng)絡(luò)中通過抓包的方式獲得客戶端B發(fā)送給Tracker服務(wù)器的Get請求數(shù) 據(jù)包,本實施例以Get請求數(shù)據(jù)包為Get announce請求數(shù)據(jù)包為例進行說明,需要說明的 是,Get announce請求是標(biāo)準(zhǔn)的HTTP Get請求,其中,Get announce請求數(shù)據(jù)包中的參數(shù) info_hash用于唯一標(biāo)識待下載文件,因此,客戶端A抓包時,可以根據(jù)Get announce請求 數(shù)據(jù)包中的參數(shù)值info_hash確定其要獲得的Getarmounce請求數(shù)據(jù)包。步驟205,客戶端A解析第一請求數(shù)據(jù)包;具體的,可以解析客戶端B向Tracker服務(wù)器發(fā)送的Get announce請求數(shù)據(jù) 包,獲得Tracker服務(wù)器地址、待下載資源的標(biāo)識以及待下載資源的大小信息。其中,Get announce請求的格式可以為GET announce ? info_hash = xxx&download = m&left = η&· · ·其中,可以從該Get announce請求數(shù)據(jù)包的包頭中提取Tracker的地址信息及端口號,根據(jù)Get announce參數(shù)直接得到待下載資源的標(biāo)識infojiash,并通過將Get announce參數(shù)中的download與left相加得到待下載資源的大小。步驟210,客戶端A向Tracker服務(wù)器發(fā)送第二請求數(shù)據(jù)包;具體的,客戶端根據(jù)步驟205中解析第一請求數(shù)據(jù)包獲得的信息(包括=Tracker 服務(wù)器的地址信息及端口號、待下載資源的標(biāo)識infojiash、待下載資源的大小)構(gòu)造第 二請求數(shù)據(jù)包,并向Tracker服務(wù)器發(fā)送構(gòu)造的第二請求數(shù)據(jù)包,以向Tracker服務(wù)器請 求獲得擁有待下載資源F的peer list信息。其中,本實施例中,第二請求數(shù)據(jù)包也為Get announce請求數(shù)據(jù)包。步驟215,客戶端A接收Tracker服務(wù)器返回的客戶端列表peer list信息;具體的,Tracker服務(wù)器接收到客戶端A發(fā)送的第二請求數(shù)據(jù)包后,會向客戶端A 返回參與下載同一個文件例如F的其他下載者的信息peer list。其中返回的peer list 信息中包含有各peer的IP地址和端口號。需要說明的是,索引服務(wù)器返回的客戶端列表信息中可以包含擁有該待下載資源 的客戶端信息,也可以包含擁有該待下載資源的服務(wù)器的信息,其中,擁有待下載資源的客 戶端和服務(wù)器都是擁有該待下載資源的對等節(jié)點Peer。為了描述方便,本發(fā)明實施例以客 戶端為例進行說明。步驟220,客戶端A根據(jù)peer list信息向至少一個peer發(fā)送BT握手請求消息;具體的,客戶端A可以根據(jù)Tracker服務(wù)器返回的下載同一個文件的peer的IP 地址和端口號,向其中至少一個peer (例如客戶端C)發(fā)送握手請求消息,以與其建立連接。 通常,客戶端A會向所有peer發(fā)送BT握手請求消息。步驟225,客戶端A接收至少一個peer返回的BT握手應(yīng)答消息,與至少一個peer 建立通信連接;步驟230,客戶端A接收至少一個peer在建立通信連接后發(fā)送的待下載資源的位 域bitfield消息;根據(jù)BT協(xié)議要求,當(dāng)下載客戶端與其他peer通過握手建立連接后,會立即向?qū)?方發(fā)送bitfield消息,通報各自擁有的待下載資源的分片情況,如果peer沒有待下載資 源的分片,則該peer可以不發(fā)送bitfield消息。其中,bitfield消息中包含有三個部 分消息長度Message Length、消息類型Message Type、數(shù)據(jù)負(fù)載Payload,其中,消息長 度Message Length為消息類型Message Type的長度及數(shù)據(jù)負(fù)載Payload的長度之和; bitfield消息中Message Type的值為5,其長度為1字節(jié);數(shù)據(jù)負(fù)載Payload部分實際是 一個位圖,如果該Peer有待下載資源的某個分片,那么對應(yīng)的位置置1,否則置O。步驟235,客戶端A根據(jù)待下載資源的大小以及bitfield消息分析確定待下載資 源的分片大??;根據(jù)BT協(xié)議要求,當(dāng)客戶端A接收到peer (例如客戶端C)在BT握手后發(fā)送的待 下載資源的bitf ie 1 d消息后,可以根據(jù)該bitf ie 1 d消息中攜帶的Message Length減去消 息類型Message Type的長度(1字節(jié))獲得該peer (例如客戶端C)返回的數(shù)據(jù)Payload 的長度。SP Payload的長度=Message Length-I0由于Payload中的每一位(bit)標(biāo)識一 個分片,且1個字節(jié)等于8位(bit),因此,通過Payload的長度可以確定該peer擁有的待 下載資源的分片數(shù)在一個首尾相距7個bit的區(qū)間內(nèi)。例如某個待下載資源共分為9片,需要2個字節(jié)來表示(第二個字節(jié)只用到一位),而另一個BT資源分為16片,也只需要2 個字節(jié)來表示,則若解析bitfield消息獲得的Payload的長度為2,可以判斷出該待下載資 源的分片數(shù)在9-16片之間。由于在步驟205中已經(jīng)通過解析第一請求數(shù)據(jù)包獲得待下載資源的大小,在本步 驟中,可以根據(jù)獲得的bitfield消息中的Payload的長度推算出該待下載資源的總分片 數(shù),并且,由于BT資源的各分片大小一般為2的η次方,例如32K、64k、128K、256k、512K、 1M、2M、4M、8M,因此,在本步驟中可以進一步根據(jù)待下載資源的大小以及待下載資源的分 片數(shù)獲得待下載資源的分片大小,具體的,可以用待下載資源大小分別除以分片數(shù)區(qū)間的 兩個端值,獲得分片大小的一個區(qū)間,在分片大小的區(qū)間內(nèi)取2的N次方的值則為該待下 載資源的分片大小。例如若客戶端A通過抓取第一請求數(shù)據(jù)包獲得待下載資源F的大 小為330K,通過解析peer (例如客戶端C)發(fā)送的bitfield消息獲得Payload的長度為 2個字節(jié),并可以推算出該待下載資源F的分片數(shù)為9-16片之間,則該待下載資源F的分 片大小為在[330K/16,330K/9](即20. 6Κ-36. 67Κ)的區(qū)間內(nèi)的2的N次方的值,則可以在 20. 6Κ-36. 67Κ區(qū)間取32Κ為該待下載資源的分片大小。步驟240,客戶端A根據(jù)分析獲得的待下載資源的分片大小向至少一個peer發(fā)送 下載請求;具體的,當(dāng)客戶端A獲得了待下載資源分片的大小后,可以與所述至少一個peer 交互并發(fā)送下載請求,實際應(yīng)用中,當(dāng)客戶端A要從客戶端C下載待下載資源分片時,客戶 端A首先必須將它與客戶端C之間的連接設(shè)置為interested,其實就是發(fā)一個interested 消息過去,而客戶端C要檢查其是否應(yīng)該給客戶端A發(fā)送數(shù)據(jù),如果客戶端C對客戶端A 是imchoke,那么就可以給客戶端A發(fā)送imchoke消息,當(dāng)客戶端A接收到客戶端C發(fā)送的 unchoke消息后,可以向客戶端C發(fā)送一個Request類型的消息以請求下載具體的分片數(shù) 據(jù),該Request類型的消息中包括待下載資源分片的索引Piece Index、待下載數(shù)據(jù)的偏移 地址Block Offset以及待下載數(shù)據(jù)長度Block Length。本領(lǐng)域人員可以知道,客戶端A可 以將一個分片中的數(shù)據(jù)分批次進行下載,一次只下載某個分片的部分?jǐn)?shù)據(jù)塊,也可以一次 下載該分片的所有數(shù)據(jù)。實際應(yīng)用中,通??蛻舳嗽谙騪eer請求資源時,一般不會一次將 整個分片一次下載,而是將一個分片分成幾個數(shù)據(jù)塊Block來進行下載,一般一個Block為 16K,當(dāng)知道待下載資源的分片大小后,客戶端可以根據(jù)分片大小劃分為多個數(shù)據(jù)塊。其中, Block Offset是數(shù)據(jù)塊在待下載資源的分片內(nèi)的偏移地址。例如若某個待下載資源的分片 大小為32K,以16K為一個數(shù)據(jù)塊對所述待下載資源的分片進行劃分,則第一個數(shù)據(jù)塊的偏 移地址Block Offset為0,Block Length為16k,第二個數(shù)據(jù)塊的偏移地址Block Offset 為 16*1024,Block Length 也是 16K。步驟245,客戶端A接收至少一個peer根據(jù)所述下載請求返回的分片數(shù)據(jù)。具體的,當(dāng)至少一個peer (例如客戶端C)接收到客戶端A的Request消息后,可以 向客戶端A返回一個Piece消息,該Piece消息包含有客戶端A請求的待下載資源的分片 索引Piece Index、待下載的數(shù)據(jù)的偏移地址Block Offset以及待下載數(shù)據(jù)Block Data, 其中,所述待下載的數(shù)據(jù)的偏移地址Block Offset是指待下載的數(shù)據(jù)塊在該分片中的偏移 地址。從而使客戶端A完成對該待下載資源的下載。通過本發(fā)明實施例提供的BT下載方法,客戶端A在未獲得待下載資源的種子文件的情況下,可以通過在網(wǎng)絡(luò)中抓取下載相同資源的其他客戶端發(fā)送給Tracker服務(wù)器的 Get announce請求數(shù)據(jù)包,并根據(jù)解析獲得的信息構(gòu)造并向Tracker服務(wù)器發(fā)送第二 Get announce請求,以獲得Tracker服務(wù)器返回的擁有待下載資源的peer list信息,通過與至 少一個peer交互,獲得待下載資源的分片大小,再根據(jù)該獲得的分片大小向至少一個peer 下載待下載資源。從而實現(xiàn)了客戶端在沒有獲得待下載資源的種子文件的情況下也能夠進 行BT下載,提升了 BT資源下載的可靠性,更好的實現(xiàn)了資源的共享。圖3為本發(fā)明實施例提供的一種BT下載裝置的結(jié)構(gòu)示意圖,如圖3所示,所述BT 下載裝置包括數(shù)據(jù)包獲取單元300,用于獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;具體的,數(shù)據(jù)包獲取單元300可以抓取網(wǎng)絡(luò)中的其他客戶端向索引服務(wù)器(即 Tracker服務(wù)器)發(fā)送的第一請求數(shù)據(jù)包,該第一請求數(shù)據(jù)包為網(wǎng)絡(luò)中其他客戶端請求索 引服務(wù)器返回?fù)碛邢嗤螺d資源的客戶端列表信息的請求數(shù)據(jù)包,具體的,該第一請求 數(shù)據(jù)包可以是Get類型的請求數(shù)據(jù)包,該數(shù)據(jù)包中可以包括Tracker地址、待下載資源標(biāo)識 以及待下載資源的大小信息,其中待下載資源標(biāo)識用于唯一標(biāo)識待下載資源。請求單元305,用于根據(jù)根據(jù)解析所述第一請求數(shù)據(jù)包獲得的所述待下載資源信 息向所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁 有所述待下載資源的客戶端列表信息;具體的,請求單元305可以通過解析數(shù)據(jù)包獲取單元300獲得的第一請求數(shù)據(jù)包 獲得Tracker服務(wù)器地址、待下載資源標(biāo)識以及待下載資源的大小信息等待下載資源信 息,根據(jù)獲得的待下載資源信息構(gòu)造第二請求數(shù)據(jù)包,以向索引服務(wù)器請求返回?fù)碛兴?待下載資源的客戶端列表信息,具體的,該第二請求數(shù)據(jù)包也可以是Get類型的請求數(shù)據(jù) 包。接收單元310,用于接收所述索引服務(wù)器返回的客戶端列表信息;具體的,當(dāng)索引服務(wù)器接收到第二請求數(shù)據(jù)包后,可以根據(jù)第二請求數(shù)據(jù)包中的 待下載資源信息返回?fù)碛性摯螺d資源的客戶端列表信息。接收單元310即用于接收所述 索引服務(wù)器返回的客戶端列表信息。處理單元315,用于從所述客戶端列表中的至少一個客戶端獲得所述待下載資源 的分片信息,所述待下載資源的分片信息包括分片大小信息;具體的,當(dāng)接收單元310接收到所述索引服務(wù)器返回的客戶端列表信息后,處理 單元315可以通過與該客戶端列表中的至少一個客戶端進行BT握手交互,接收至少一個客 戶端在BT握手后返回的待下載資源的分片信息,并根據(jù)獲得的待下載資源的分片信息確 定該待下載資源的分片大小。下載單元320,用于根據(jù)所述待下載資源的分片信息從所述至少一個客戶端下載 所述待下載資源。具體的,下載單元320可以根據(jù)處理單元315確定的待下載資源的分片大小向所 述至少一個客戶端發(fā)送下載請求,從所述至少一個客戶端下載待下載資源。本發(fā)明實施例提供的BT下載裝置可以通過抓取網(wǎng)絡(luò)中其他客戶端向索引服務(wù)器 發(fā)送的請求數(shù)據(jù)包,并解析獲得索引服務(wù)器的地址、待下載資源標(biāo)識以及所述待下載資源 的大小信息等待下載資源信息,并構(gòu)造第二請求數(shù)據(jù)包,從而獲得索引服務(wù)器返回的擁有待下載資源的客戶端列表信息,并通過與客戶端列表中至少一個客戶端交互獲得待下載資 源的分片信息,從而根據(jù)待下載資源的分片信息向至少一個客戶端下載分片數(shù)據(jù),使得在 沒有獲得種子文件的請況下也能夠進行BT下載,提升了 BT資源下載的可靠性,更好的實現(xiàn) 了 BT資源的共享。圖4為本發(fā)明實施例提供的另一種BT下載裝置的結(jié)構(gòu)示意圖,如圖4所示,該下 載裝置包括數(shù)據(jù)包獲取單元300,用于獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;具體的,當(dāng)下載裝置要下載待下載資源F時,若其在網(wǎng)絡(luò)中沒有獲得F文件的種 子文件,可以通過抓包獲得網(wǎng)絡(luò)中下載資源F的其他客戶端(例如客戶端B)向索引服務(wù) 器(即Tracker服務(wù)器)發(fā)送的第一請求數(shù)據(jù)包,在本實施例中,該第一請求數(shù)據(jù)包可以是 Get類型的請求數(shù)據(jù)包,該第一請求數(shù)據(jù)包的目的是向Tracker服務(wù)器獲取擁有待下載資 源的其它peer的信息,以便與其它peer通訊下載BT資源。請求單元305,用于根據(jù)根據(jù)解析所述第一請求數(shù)據(jù)包獲得的所述待下載資源信 息向所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁 有所述待下載資源的客戶端列表信息;具體的,所述請求單元305可以包括解析子單元3051,用于解析所述數(shù)據(jù)包獲取單元300獲得的第一請求數(shù)據(jù)包獲得 待下載資源信息;其中,所述待下載資源信息包括索引服務(wù)器的地址、待下載資源標(biāo)識以及所述待 下載資源的大小信息。請求子單元3052,用于根據(jù)所述解析子單元3051解析獲得的待下載資源信息向 所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所 述待下載資源的客戶端列表信息。接收單元310,用于接收所述索引服務(wù)器返回的客戶端列表信息;具體的,Tracker服務(wù)器接收到請求子單元3052發(fā)送的第二請求數(shù)據(jù)包后,會向 客戶端返回參與下載同一個文件例如F的其他下載者的信息peer list。其中返回的peer list信息中包含有各peer的IP地址和端口號,接收單元310用于接收Tracker返回的 peer list 信息。處理單元315,用于從所述客戶端列表中的至少一個客戶端獲得所述待下載資源 的分片信息,所述待下載資源的分片信息包括分片大小信息;下載單元320,用于根據(jù)所述待下載資源的分片信息從所述至少一個客戶端下載 所述待下載資源。具體的,下載單元320可以根據(jù)分析處理單元315分析確定待下載資源的分片大 小信息向所述客戶端列表中的至少一個peer發(fā)送下載請求,并接收所述至少一個peer在 接收到下載請求后返回的分片數(shù)據(jù)。其中,該下載請求具體可以為Request類型的請求消 息,Request類型的消息中包括待下載資源分片的索引Piece Index、待下載數(shù)據(jù)的偏移地 址Block Offset以及待下載數(shù)據(jù)長度Block Length。所述至少一個peer在接收到下載請 求后返回的分片數(shù)據(jù)可以包含在Piece消息中,其中,所述Piece消息包含有客戶端A請求 的待下載資源的分片索引Piece Index、待下載的數(shù)據(jù)的偏移地址Block Offset以及待下載數(shù)據(jù) Block Data。本領(lǐng)域人員可以知道,下載單元320可以將一個分片中的數(shù)據(jù)分批次進行下載, 一次只下載某個分片的部分?jǐn)?shù)據(jù),也可以一次下載該分片的所有數(shù)據(jù)。實際應(yīng)用中,通???戶端在向peer請求資源時,一般不會一次將整個分片一次下載,而是將一個分片分成幾個 數(shù)據(jù)塊Block來進行下載,一般一個Block為16K,當(dāng)知道待下載資源的分片大小后,客戶 端可以根據(jù)分片大小劃分為多個數(shù)據(jù)塊。其中,Block Offset是數(shù)據(jù)塊在待下載資源的分 片內(nèi)的偏移地址。例如若某個待下載資源的分片大小為32K,以16K為一個數(shù)據(jù)塊對所述待 下載資源的分片進行劃分,則第一個數(shù)據(jù)塊的偏移地址Block Offset為0,Block Length 為16k,第二個數(shù)據(jù)塊的偏移地址Block Offset為16*1024,Block Length也是16K。進一步的,在本發(fā)明又一個實施例提供的BT下載裝置中,包括數(shù)據(jù)包獲取單元 300、請求單元305、接收單元310、處理單元315以及下載單元320,其中,所述數(shù)據(jù)包獲取單 元300、請求單元305、接收單元310以及下載單元320可以參見前述實施例的描述,如圖4 所示,所述處理單元315可以包括連接建立子單元3151,用于與所述客戶端列表中的至少一個客戶端建立通信連 接;具體的,可以根據(jù)peer list信息向至少一個peer發(fā)送BT握手請求消息,并接收 至少一個peer返回的BT握手應(yīng)答消息,與至少一個peer建立通信連接。通常,客戶端A 會向所有peer發(fā)送BT握手請求消息。接收子單元3152,用于接收至少一個peer在建立通信連接后發(fā)送的待下載資源 的位域bitfield消息;具體的,根據(jù)BT協(xié)議要求,當(dāng)下載客戶端與其他peer通過握手建立連接后,會立 即向?qū)Ψ桨l(fā)送bitfield消息,通報各自擁有的待下載資源的分片情況,如果peer沒有待 下載資源的分片,則該peer可以不發(fā)送bitfield消息。其中,bitfield消息中包含有三 個部分消息長度Message Length、消息類型Message Type、數(shù)據(jù)負(fù)載Payload,其中,消息 長度Message Length為消息類型Message Type的長度及數(shù)據(jù)負(fù)載Payload的長度之和; bitfield消息中Message Type的值為5,其長度為1字節(jié);數(shù)據(jù)負(fù)載Payload部分實際是 一個位圖,如果該Peer有待下載資源的某個分片,那么對應(yīng)的位置置1,否則置0。分析處理子單元3153,用于根據(jù)待下載資源的大小以及位域bitfield消息分析 確定待下載資源的分片大小。具體的,當(dāng)接收子單元3152接收到peer list中至少一個peer發(fā)送的位域 bitfield消息后,分析處理子單元3153可以根據(jù)獲得的bitfield消息以及解析子單元 3051解析獲得的待下載資源的大小信息分析獲得所述待下載資源的分片大小等分片信息。具體的,由于根據(jù)BT協(xié)議要求,根據(jù)該bitfield消息中攜帶的Message Length 減去消息類型Message Type的長度(1字節(jié))獲得該peer (例如客戶端C)返回的數(shù)據(jù) Payload 的長度,艮Payload 的長度=Message Length-I0 由于 Payload 中的每一位(bit) 標(biāo)識一個分片,且1個字節(jié)等于8位(bit),因此,分析處理子單元3153可以根據(jù)獲得的 bitfield消息確定出該bitfield消息中攜帶的Payload的長度,并根據(jù)確定的Payload的 長度進一步確定該peer擁有的待下載資源的分片數(shù)區(qū)間。例如某個待下載資源共分為9 片,需要2個字節(jié)來表示(第二個字節(jié)只用到一位),而另一個BT資源分為16片,也只需要2個字節(jié)來表示,則若解析bitfield消息獲得的Payload的長度為2,可以判斷出該待下載 資源的分片數(shù)在9-16片之間。進一步的,當(dāng)分析處理子單元3153可以根據(jù)解析子單元3051解析獲得的待下載 資源的大小信息以及前述分析獲得的待下載資源的分片數(shù)區(qū)間確定所述待下載資源的分 片大小,具體的,由于BT資源的各分片大小一般為2的η次方,例如32K、64k、128K、256k、 512K、1M、2M、4M、8M,因此,分析處理子單元3153可以用待下載資源大小分別除以分片數(shù)區(qū) 間的兩個端值,獲得分片大小的一個區(qū)間,在分片大小的區(qū)間內(nèi)取2的N次方的值則為該待 下載資源的分片大小。例如若解析子單元3051解析所述數(shù)據(jù)包獲取單元300抓取的第一 請求數(shù)據(jù)包獲得待下載資源F的大小為330K,分析處理子單元3153通過解析peer (例如客 戶端C)發(fā)送的bitfield消息獲得Payload的長度為2個字節(jié),則可以推算出該待下載資 源F的分片數(shù)為9-16片之間,且該分片大小為在[330K/16,330K/9](即20. 6Κ-36. 67Κ)的 區(qū)間內(nèi)的2的N次方的值,則可以在20. 6Κ-36. 67Κ區(qū)間取32Κ為該待下載資源的大小。本發(fā)明實施例提供的BT下載裝置在未獲得待下載資源的種子文件的情況下,可 以通過在網(wǎng)絡(luò)中抓取下載相同資源的其他客戶端發(fā)送給索引服務(wù)器的第一請求數(shù)據(jù)包,并 根據(jù)解析獲得的待下載資源信息構(gòu)造第二請求數(shù)據(jù)包,并向索引服務(wù)器發(fā)送第二請求數(shù)據(jù) 包,以獲得索引服務(wù)器返回的擁有待下載資源的peer list信息,通過與peer list信息 中至少一個peer交互,獲得待下載資源的分片大小,再根據(jù)該獲得的分片大小向至少一個 peer下載待下載資源。從而實現(xiàn)了在沒有獲得待下載資源的種子文件的情況下也能夠進行 BT下載,提升了 BT資源下載的可靠性,更好的實現(xiàn)了資源的共享。需要說明的是,上述實施例中的BT下載裝置可以是指客戶端,也可以是指服務(wù) 器,也可以只是應(yīng)用于客戶端或服務(wù)器中的一個模塊,只要是能夠?qū)崿F(xiàn)下載BT資源的裝置 即可。在實際應(yīng)用中,上述實施例提供的BT下載方法及BT下載裝置可以應(yīng)用于下載系 統(tǒng)中,進一步的,本發(fā)明實施例也提供一種BT下載系統(tǒng),可以包括索引服務(wù)器(Tracker服 務(wù)器)以及至少兩個如前述實施例所述BT下載裝置。此外,在實際應(yīng)用中,上述實施例提供的BT下載方法及BT下載裝置可以應(yīng)用于緩 存系統(tǒng)中,具體的,可以將緩存系統(tǒng)不只在運營端的骨干網(wǎng)上,通過抓取網(wǎng)絡(luò)上的數(shù)據(jù)包, 并對抓取的數(shù)據(jù)包進行分析,找出熱門的BT資源,通過本發(fā)明實施例所述的下載方法或下 載裝置從外網(wǎng)中進行下載該熱點的BT資源并進行緩存,以供內(nèi)網(wǎng)用戶下載使用。當(dāng)內(nèi)網(wǎng)用 戶下載緩存的熱點BT資源時,緩存系統(tǒng)可以通過重定向?qū)?nèi)網(wǎng)用戶的下載請求重定向到 緩存系統(tǒng)的Tracker服務(wù)器上,由緩存系統(tǒng)的Tracker服務(wù)器向內(nèi)網(wǎng)用戶返回所述熱點BT 資源的客戶端或服務(wù)器列表。從而使緩存系統(tǒng)能夠字段發(fā)現(xiàn)網(wǎng)絡(luò)中的熱點資源,并通過上 述下載方法在無法從外網(wǎng)中獲取熱點資源的種子文件時也能下載并緩存熱點資源,并為內(nèi) 網(wǎng)用戶提供下載服務(wù)。從而減輕了網(wǎng)間流量,節(jié)省了出口帶寬,提高了用戶下載速度及下載 體驗。需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列 的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為 依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部 分,可以參見其他實施例的相關(guān)描述。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以 通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于計算機可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。以上所述僅為本發(fā)明的幾個實施例,可以理解的是,對本領(lǐng)域普通技術(shù)人員來說, 可以根據(jù)本發(fā)明實施例的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,而所有這些改變或 替換都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
一種比特洪流BT下載方法,其特征在于,包括獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;根據(jù)解析所述第一請求數(shù)據(jù)包獲得的待下載資源信息,向所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所述待下載資源的客戶端列表信息;接收所述索引服務(wù)器返回的客戶端列表信息;從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分片信息,所述分片信息包括分片大小信息;根據(jù)所述分片信息從所述至少一個客戶端下載所述待下載資源。
2.根據(jù)1所述的方法,其特征在于,所述待下載資源信息包括索引服務(wù)器的地址、待下載資源標(biāo)識以及所述待下載資源的大小信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從所述客戶端列表中的至少一個客 戶端獲得所述待下載資源的分片信息包括從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分片數(shù)量信息; 根據(jù)所述待下載資源分片數(shù)量信息以及所述待下載資源大小信息確定所述待下載資 源的分片大小。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從所述客戶端列表中的至少一個客 戶端獲得所述待下載資源的分片信息包括與所述至少一個客戶端進行建立通信連接;接收至少一個客戶端在建立通信連接后發(fā)送的位域bitfield消息;根據(jù)所述bitfield消息中的數(shù)據(jù)負(fù)載Payload長度獲得待下載資源的分片數(shù)量信息;根據(jù)所述待下載資源的大小以及所述待下載資源的分片數(shù)量獲得所述待下載資源的 分片大小。
5.一種BT下載裝置,其特征在于,包括數(shù)據(jù)包獲取單元,用于獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包; 請求單元,用于根據(jù)根據(jù)解析所述第一請求數(shù)據(jù)包獲得的待下載資源信息,向所述索 引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所述待下 載資源的客戶端列表信息;接收單元,用于接收所述索引服務(wù)器返回的客戶端列表信息; 處理單元,用于從所述客戶端列表中的至少一個客戶端獲得所述待下載資源的分片信 息,所述分片信息包括分片大小信息;下載單元,用于根據(jù)所述分片信息從所述至少一個客戶端下載所述待下載資源。
6.根據(jù)權(quán)利要求5所述的下載裝置,其特征在于所述待下載資源信息包括索引服務(wù) 器的地址、待下載資源標(biāo)識以及所述待下載資源的大小信息。
7.根據(jù)權(quán)利要求6所述的下載裝置,其特征在于,所述處理單元包括連接建立子單元,用于與所述客戶端列表中的至少一個客戶端建立通信連接; 接收子單元,用于接收至少一個客戶端在建立通信連接后發(fā)送的待下載資源的位域 bitfield 消息;分析處理子單元,用于根據(jù)待下載資源的大小以及bitfield消息分析確定待下載資 源的分片大小。
8.根據(jù)權(quán)利要求7所述的下載裝置,其特征在于所述分析處理子單元用于根據(jù)所述bitfield消息的數(shù)據(jù)負(fù)載Payload長度獲得所述 待下載資源的分片數(shù)量信息,并根據(jù)所述待下載資源的大小以及所述待下載資源的分片數(shù) 量獲得所述待下載資源的分片大小信息。
9.一種BT下載系統(tǒng),其特征在于,包括索引服務(wù)器以及至少兩個如權(quán)利要求5-8任意 一項所述的下載裝置。
全文摘要
本發(fā)明實施例公開了一種BT下載方法,包括獲取網(wǎng)絡(luò)中向索引服務(wù)器發(fā)送的第一請求數(shù)據(jù)包;根據(jù)解析所述第一請求數(shù)據(jù)包獲得的待下載資源信息向所述索引服務(wù)器發(fā)送第二請求數(shù)據(jù)包,所述第二請求數(shù)據(jù)包用于向索引服務(wù)器請求擁有所述待下載資源的客戶端列表信息;接收所述索引服務(wù)器返回的客戶端列表信息;與所述客戶端列表中的至少一個客戶端交互,獲得所述待下載資源的分片信息,所述待下載資源的分片信息包括分片大小信息;根據(jù)所述待下載資源的分片信息從所述至少一個客戶端下載所述待下載資源。該下載方法可以在找不到種子文件的情況下實現(xiàn)BT資源的下載,提升了BT資源下載的可靠性。
文檔編號H04L29/06GK101917488SQ20101026449
公開日2010年12月15日 申請日期2010年8月20日 優(yōu)先權(quán)日2010年8月20日
發(fā)明者張勇 申請人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
安平县| 吉林省| 庆安县| 锡林郭勒盟| 晋州市| 通海县| 霞浦县| 北辰区| 柘城县| 涞源县| 晋中市| 大英县| 兰溪市| 南安市| 南丰县| 灵宝市| 靖安县| 岚皋县| 新蔡县| 墨脱县| 瑞金市| 沙坪坝区| 怀化市| 阿拉善左旗| 鲁甸县| 林口县| 洞口县| 五峰| 卢湾区| 仙居县| 项城市| 闵行区| 深泽县| 河北省| 蒲江县| 民和| 奉新县| 丰顺县| 武隆县| 五指山市| 新余市|