專利名稱:一種p2p下載文件完整性校驗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信P2P數(shù)據(jù)分發(fā)領(lǐng)域,特別涉及一種P2P下載文件完整性校驗方法。
背景技術(shù):
P2P下載是目前互聯(lián)網(wǎng)文件下載的主要方式,不同于傳統(tǒng)的C/S模式,P2P下載的數(shù)據(jù)來自多個不同的節(jié)點,而且沒有辦法確保所有的節(jié)點都可信,因此必須對下載的文件進行完整性校驗。目前主流的P2P下載協(xié)議,如eMule和BitTorrent,大多通過將一個文件分成不同的文件塊,每下載完成一個完整的文件塊后,對其采用MD4或者SHA1哈希算法進行完整性校驗,以便于快速定位出現(xiàn)錯誤的文件塊,從而保證整個文件的完整性。
對于特定平臺,TCP異步接收緩沖區(qū)的大小和哈希計算的能力通常是固定的。同時,對于大文件的下載,為了減少傳輸原始文件塊哈希值帶來的通信開銷,文件塊也不可能過小。例如eMuIe的文件塊大小固定為9.28MB; BitTorrent的文件塊大小根據(jù)文件大小確定, 一個4GB的大文件,其文件塊大小通常為2MB或者4MB。特別的,對于嵌入式平臺上的P2P下載,由于其計算能力低下,如果要使哈希計算的時間足夠短,必須使文件塊的大小足夠小,如16KB,直接減小文件塊大小顯然不是可行辦法。因此,理論上,現(xiàn)有的文件完整性校驗帶來的時間延遲主要由兩部分構(gòu)成
1) 哈希計算時間。由于MD4和SHA1這類哈希算法的時間復(fù)雜度通常為O(n),其中n是文件塊字節(jié)數(shù),文件塊越大,時間開銷越大。例如,100Mbps的網(wǎng)絡(luò)上傳輸4MB的數(shù)據(jù)塊,理論最短傳輸時間大約是320毫秒; 一臺主頻為2.4GHz的普通計算機計算一個大小為4M的文件的SHA1哈希值,其總時間開銷大約是75毫秒;而在一臺主頻為200MHz的嵌入式設(shè)備上,時間開銷則達到700毫秒。
2) 傳輸時間開銷。文件完整性校驗大多是分塊校驗,在每一個分塊校驗過程中,應(yīng)用程序?qū)和=邮諗?shù)據(jù),如果暫停時間過長,可能使發(fā)送節(jié)點將接收節(jié)點從發(fā)送服務(wù)隊列中移除甚至斷開與節(jié)點的傳輸連接。最終使得節(jié)點必須再等待一段時間才能夠獲取發(fā)送節(jié)點的服務(wù)。因此,這部分的時間開銷如果過大,將進一步降低文件傳輸?shù)男阅?。另外,也可以采用開啟額外線程來進行哈希計算,使得哈希計算與數(shù)據(jù)接收并行進行。但是, 一方面開啟新線程來進行文件完整性校驗會增加系統(tǒng)軟件的復(fù)雜度;另一方面由于P2P下載過程中,節(jié)點需要同時從多個伙伴節(jié)點下載數(shù)據(jù),將導(dǎo)致開啟過多線程,反而可能會增加系統(tǒng)開銷,降低效率。 一些文獻結(jié)合其提出的校驗框架和協(xié)議,提出了基于塊的概率校驗算法,其思想是選擇性的對部分文件塊進行校驗以減少整個文件完整性校驗過程中的計算開銷,但并不能完全避免漏檢,因此,并不適合于可靠性要求很高的文件下載。
發(fā)明內(nèi)容
本發(fā)明的目的是,針對現(xiàn)有的文件完整性校驗方法的不足,提出一種P2P下載文件完整性校驗方法,在P2P下載過程中,利用TCP異步接收緩沖區(qū)隱藏P2P下載過程中的文件完整性校驗延遲,提高P2P下載的效率,特別是提高哈希計算能力低下的嵌入式P2P下載的效率。本發(fā)明可以應(yīng)用于BitTorrent協(xié)議以及其它類似的P2P下載協(xié)議。
由于TCP基于滑動窗口的流量控值機制,運行于操作系統(tǒng)內(nèi)核的TCP協(xié)議棧,對于每一個TCP連接通常都有一個TCP異步接收緩沖區(qū);所謂的TCP異步接收緩沖區(qū)是指,當上層應(yīng)用在處理其它事務(wù)而沒有從TCP協(xié)議棧讀取網(wǎng)絡(luò)數(shù)據(jù)時,TCP協(xié)議棧依然保持正常的數(shù)據(jù)接收,并將數(shù)據(jù)緩存在操作系統(tǒng)內(nèi)核的一塊內(nèi)存區(qū)。TCP異步接收緩沖區(qū)的大小取決于具體的協(xié)議棧實現(xiàn),通常為65535字節(jié)左右。因此,如果應(yīng)用程序暫停接收數(shù)據(jù)的時間足夠短,使得這段時間內(nèi)TCP異步接收緩沖區(qū)沒有填滿,那么底層的數(shù)據(jù)接收實際是不受影響的。換句話說,如果每一次哈希計算的時間足夠短或者TCP異步接收緩沖區(qū)足夠大,前面提到的文件完整性校驗延遲是可以完全隱藏的。
為了實現(xiàn)上述目的,本發(fā)明提供一種P2P下載文件完整性校驗方法,該方法根據(jù)下載客戶端的特征參數(shù)將文件塊分為子數(shù)據(jù)塊,當接收到一個子數(shù)據(jù)塊時,利用哈希算法,計算該子塊的哈希摘要,并更新文件塊的哈希向量;當下載并計算完最后一個子塊的哈希值時,隨即生成文件塊的哈希值,在下載過程中對文件完整性校驗延遲進行隱藏;
所述的P2P下載文件完整性校驗方法包括以下步驟(1)下載節(jié)點從種子文件服務(wù)器下載種子文件;下載過程中進行文件完整性校驗的過程包括從節(jié)點請求下載指定文件塊數(shù)據(jù),以所確定的子數(shù)據(jù)塊的大小為單位,從節(jié)點順序接收數(shù)據(jù);(2) 下載節(jié)點根據(jù)平臺哈希計算能力、下載帶寬和TCP異步接收緩沖區(qū)大小,計算能夠隱藏哈希計算延遲的最大子數(shù)據(jù)塊長度"M,并根據(jù)計算所得的最大子數(shù)據(jù)塊大小將文件分為多個子數(shù)據(jù)塊;
(3) 下載節(jié)點通過種子文件里的中央索引服務(wù)器地址,登錄中央索引服務(wù)器,請求擁有下載文件數(shù)據(jù)的節(jié)點列表;
(4) 下載節(jié)點從中央索引服務(wù)器返回的節(jié)點列表中選擇伙伴節(jié)點,并同時向多個所選擇的伙伴節(jié)點分別請求下載不同的文件塊;
(5) 下載節(jié)點將文件塊分為k個子數(shù)據(jù)塊;
(6) 下載節(jié)點從伙伴節(jié)點接收數(shù)據(jù),并在接收過程中幾乎同步完成文件塊哈希值的計算;
(7) 用計算出的文件塊的哈希值與種子文件中,該文件塊的原始哈希值進行比較,如果一致,則表明該文件塊是沒有篡改過的合法數(shù)據(jù),將其存入文件中,否則,丟棄該文件塊,并向其它節(jié)點請求下載該文件塊;
(8) 重復(fù)步驟(4)到(7)直到整個文件下載完成。
所述的步驟(2)中計算最大子數(shù)據(jù)塊長度的方法,根據(jù)下載平臺哈希計算能力、網(wǎng)絡(luò)帶寬和TCP異步接收緩沖區(qū)的大小按照公式(i)計算出最大子數(shù)據(jù)塊的長度
/ — h mlmaa; — ^ 、U
式(i)中,b是TCP異步接收緩沖區(qū)大小,單位字節(jié);W是平臺每秒哈希計算的字節(jié)數(shù),單位字節(jié)/秒;"是平臺網(wǎng)絡(luò)下載帶寬,單位字節(jié)/秒。
所述的步驟(5)中數(shù)據(jù)塊劃分為k個子數(shù)據(jù)塊的方法,子數(shù)據(jù)塊數(shù)目k由公式(ii)計算得到;最后一個子數(shù)據(jù)塊的長度^W由公式(iii)計算得到;
Oasf = 1 _ (A; — 1) . Zmaa; (iii)。
所述的步驟(6)中文件塊數(shù)據(jù)的接收方法中,下載節(jié)點按步驟(5)所確定的
各個子數(shù)據(jù)塊的長度為單位,從伙伴節(jié)點順序接收各個子數(shù)據(jù)塊的數(shù)據(jù)。
所述的步驟(6)中計算文件塊哈希值的方法中,下載節(jié)點每從伙伴節(jié)點接收到一個塊子數(shù)據(jù)塊就計算該子數(shù)據(jù)塊的哈希摘要,并更新文件塊的哈希向量;接收完最后一個子數(shù)據(jù)塊并完成文件塊哈希向量的最終更新后,由文件塊哈希向量生成整個文件塊的哈希值。
在步驟(6)計算子數(shù)據(jù)塊摘要的過程中,為了避免因為下載節(jié)點性能的波動引 起計算時間增加,還需要采取以下步驟
A. 開始計算時,設(shè)置計算定時器,用來測量計算哈希所耗費的時間,并根據(jù)所 采用的哈希算法,在計算流程中設(shè)置合適的計算時間檢查點;
B. 根據(jù)哈希算法進行子數(shù)據(jù)塊哈希摘要的計算;
C. 每當執(zhí)行到計算時間檢査點,檢査哈希計算時間是否超過最大緩沖時間T;
D. 如果哈希計算時間超過T,則轉(zhuǎn)向E;否則轉(zhuǎn)向B繼續(xù)哈希摘要的計算;
E. 暫停哈希計算,將TCP異步接收緩沖區(qū)的數(shù)據(jù)立即取出,以保證底層數(shù)據(jù)的 正常接收;
F. 重置定時器,轉(zhuǎn)向B,從暫停的位置開始繼續(xù)執(zhí)行哈希摘要計算的后續(xù)流程;
G. 結(jié)束哈希塊摘要的計算,完成文件塊哈希向量的更新。
需要注意的是,步驟(4)可能同時向多個伙伴節(jié)點分別請求不同的文件塊下載。
所述的步驟C中,獲得最大緩沖時間T需要按照公式(iv)進行計算 T二^ (iv)。
由于TCP異步接收緩沖區(qū)的存在,根據(jù)步驟(2)和(5)將原本較大的文件塊 分成多個子數(shù)據(jù)塊后,采用步驟(6)所述方法,下載節(jié)點在計算子數(shù)據(jù)塊哈希值的 過程中,仍然可以保持數(shù)據(jù)的正常接收,從而在下載過程中隱藏了哈希計算產(chǎn)生的 延遲。
對文件完整性校驗延遲進行隱藏的方法。包括根據(jù)下載客戶端的特征參數(shù)將文 件塊分為子數(shù)據(jù)塊、以及下載過程中進行文件完整性校驗的方法和流程。將文件塊
分為子數(shù)據(jù)塊的方法包括根據(jù)下載客戶端TCP接收緩沖區(qū)的大小、下載客戶端的 下載帶寬和客戶端的計算能力,計算最大子數(shù)據(jù)塊大?。桓鶕?jù)計算所得的最大子數(shù) 據(jù)塊大小將文件分為多個子數(shù)據(jù)塊。下載過程中進行文件完整性校驗的過程包括-從節(jié)點請求下載指定文件塊數(shù)據(jù),以所確定的子數(shù)據(jù)塊的大小為單位,從節(jié)點順序 接收數(shù)據(jù);當接收到一個子數(shù)據(jù)塊時,利用哈希算法,計算該子塊的哈希摘要,并 更新文件塊的哈希向量;當下載并計算完最后一個子塊的哈希值時,隨即生成文件 塊的哈希值。由于有效利用了下載客戶端TCP異步接收緩沖區(qū),較小子數(shù)據(jù)塊的哈 希計算產(chǎn)生的延遲剛好可以被其隱藏,從而有效提高了 P2P下載的效率。該方法簡
單有效,特別適合于計算能力弱的嵌入式平臺。
本發(fā)明的文件下載以及校驗過程的完整步驟如下(1) 下載節(jié)點從種子文件服務(wù)器下載種子文件。
(2) 下載節(jié)點根據(jù)平臺哈希計算能力、下載帶寬和TCP異步接收緩沖區(qū)大小, 根據(jù)公式(i)計算出最大緩沖時間r,根據(jù)公式(ii)計算能夠隱藏哈希計算延遲的 最大子數(shù)據(jù)塊長度Z
"t (i)
Z腸a; = L^t」'64 (ii)
上述二式中,b是TCP異步接收緩沖區(qū)大小,單位字節(jié);^是平臺每秒哈希 計算的字節(jié)數(shù),單位字節(jié)/秒;V是平臺網(wǎng)絡(luò)下載帶寬,單位字節(jié)/秒。
(3) 下載節(jié)點通過種子文件里的中央索引服務(wù)器地址,登錄中央索引服務(wù)器, 請求擁有下載文件數(shù)據(jù)的節(jié)點列表。
(4) 下載節(jié)點從中央索引服務(wù)器返回的節(jié)點列表中選擇伙伴節(jié)點,并向其請求 文件塊數(shù)據(jù)。
(5) 下載節(jié)點將文件塊按照每塊大小為Zma:r字節(jié),將文件塊分為
個子數(shù)據(jù)塊,其中最后一個子數(shù)據(jù)塊長度^^由公式(iv)計算得到,其它子數(shù) 據(jù)塊長度為^
^as力=L _ — 1) . "ax (iv)
(6) 下載節(jié)點以子數(shù)據(jù)塊為單位按順序從伙伴節(jié)點接收數(shù)據(jù)。每接收到一個子 數(shù)據(jù)塊,就計算該子數(shù)據(jù)塊的哈希摘要,并更新文件塊的哈希向量。當接收完最后 一個子數(shù)據(jù)塊并完成文件塊的哈希向量的最終更新時,由哈希向量生成整個文件塊 的哈希值。
(7) 用計算出的文件塊的哈希值與種子文件中,該文件塊的原始哈希值進行比 較,如果一致,則表明該數(shù)據(jù)塊是沒有篡改過的合法數(shù)據(jù),將其標記為已下載并存 入文件中,否則,丟棄該文件塊。
(8) 重復(fù)步驟(4)到(7)直到整個文件下載完成。
本發(fā)明的P2P下載文件完整性校驗方法中,所述的下載節(jié)點在文件塊數(shù)據(jù)的接 收過程中就進行文件塊的哈希值計算,由于TCP異步接收緩沖區(qū)的存在,步驟(6) 中下載節(jié)點在計算子數(shù)據(jù)塊哈希值的過程中,仍然保持數(shù)據(jù)的正常接收,從而在下 載過程中隱藏了哈希計算產(chǎn)生的延遲。
本發(fā)明的優(yōu)點在于充分利用了TCP異步接收緩沖區(qū),使得P2P下載過程中的校驗延遲可以被完全隱藏,有效提高了 P2P下載的效率,特別是嵌入式平臺的上的 P2P下載的效率。從具體實施的情況看,根據(jù)不同平臺性能的差異,本方法可以減少 10%到30%的總下載時間,對于在嵌入式平臺上用P2P協(xié)議下載大文件的性能改善 特別明顯。
本發(fā)明的優(yōu)點還在于所提方法不依賴于具體的校驗框架或者協(xié)議,特別是本 方法的核心思想,可以直接應(yīng)用到現(xiàn)有的P2P下載協(xié)議中,如eMule協(xié)議和BitTorrent 協(xié)議,具有較好的可行性。
圖1為典型的P2P下載系統(tǒng)結(jié)構(gòu)圖2本發(fā)明中P2P文件完整性校驗延遲隱藏方法流程;
圖3基于SHA1的具體哈希計算流程;
圖4基于SHA1的子數(shù)據(jù)塊摘要計算流程。
圖面說明
1、下載節(jié)點 2、種子節(jié)點 3、中央索引服務(wù)器 4、種子文件服務(wù)器
具體實施例方式
下面結(jié)合附圖和具體實施方式
,對本發(fā)明的P2P下載文件完整性校驗延遲隱藏 方法進行說明。
在對本發(fā)明的P2P下載文件完整性校驗延遲隱藏方法進行說明前,首先對本發(fā) 明的應(yīng)用場景進行說明。如圖1所示,本發(fā)明所涉及的P2P下載系統(tǒng)包括
下載節(jié)點l:從網(wǎng)絡(luò)中其它節(jié)點下載數(shù)據(jù)的節(jié)點。通常,在P2P網(wǎng)絡(luò)中, 一個下
載節(jié)點也會向其它下載節(jié)點上傳數(shù)據(jù)。
種子節(jié)點2:擁有完整文件數(shù)據(jù)的節(jié)點。種子節(jié)點只向其它下載節(jié)點上傳數(shù)據(jù),
不下載數(shù)據(jù)。
中央索引服務(wù)器3:維護整個P2P網(wǎng)絡(luò)中的所有節(jié)點信息,包括下載節(jié)點和種子
節(jié)點。并向下載節(jié)點提供網(wǎng)絡(luò)中其它節(jié)點的信息。
種子文件服務(wù)器4:存儲下載文件的種子信息文件,并通過Web等方式發(fā)布種
子信息文件。種子文件主要包含中央索引服務(wù)器地址、下載文件的名稱、長度、文 件塊大小、文件哈希信息和各個文件塊的原始哈希值等信息。
如圖2所示,所述文件下載以及校驗過程包括以下步驟 步驟201、下載節(jié)點從種子文件服務(wù)器下載種子文件。步驟202、下載節(jié)點根據(jù)平臺哈希計算能力、下載帶寬和TCP異步接收緩沖區(qū) 大小,根據(jù)公式(i)計算出最大緩沖時間T,根據(jù)公式(ii)計算能夠隱藏哈希計算
延遲的最大子數(shù)據(jù)塊長度〖maa;;
H (i)
"=L|S」'64 (ii)
上述二式中,b是TCP異步接收緩沖區(qū)大小,單位字節(jié);^是平臺每秒哈希 計算的字節(jié)數(shù),單位字節(jié)/秒;"是平臺網(wǎng)絡(luò)下載帶寬,單位字節(jié)/秒。
步驟203、下載節(jié)點通過種子文件里的中央索引服務(wù)器地址,登錄中央索引服 務(wù)器,請求擁有下載文件數(shù)據(jù)的節(jié)點列表。
步驟204、下載節(jié)點從中央索引服務(wù)器返回的節(jié)點列表中選擇伙伴節(jié)點,并向
其請求文件塊數(shù)據(jù)。
步驟205、下載節(jié)點將文件塊按照每塊大小為Zmax字節(jié),將文件塊分為
個子數(shù)據(jù)塊,其中最后一個子數(shù)據(jù)塊長度Z^M由公式(iii)計算得到,其它子數(shù) 據(jù)塊長度為z
^ast = 1 - (fc _ 1) ' We (iv)
步驟206、下載節(jié)點以子數(shù)據(jù)塊為單位按順序從伙伴節(jié)點接收數(shù)據(jù)。每接收到 一個子數(shù)據(jù)塊,就計算該子數(shù)據(jù)塊的哈希摘要,并更新文件塊的哈希向量。當接收 完最后一個子數(shù)據(jù)塊并完成文件塊的哈希向量的最終更新時,整個文件塊的哈希值 立即由哈希向量生成。每接收到一個子數(shù)據(jù)塊,就計算該子數(shù)據(jù)塊的哈希值,并更 新文件塊的哈希值。當接收完最后一個子數(shù)據(jù)塊并完成文件塊哈希值更新時,整個 文件塊的哈希值計算即完成。
步驟207、用計算出的文件塊的哈希值與種子文件中,該文件塊的原始哈希值
進行比較,如果一致,則表明該數(shù)據(jù)塊是沒有篡改過的合法數(shù)據(jù),將其標記為已下 載并存入文件中,否則,丟棄該文件塊。
步驟208、重復(fù)步驟204到207直到整個文件下載完成。 具體實施中,公式(i)和(ii)中的相關(guān)參數(shù)可以實際測得。 在步驟206計算子數(shù)據(jù)塊摘要的過程中,為了避免因為下載節(jié)點性能的波動引 起計算時間增加,還需要采取以下步驟
206-A.開始計算時,設(shè)置計算定時器,用來測量計算哈希所耗費的時間,并根據(jù)所采用的哈希算法,在計算流程中設(shè)置合適的計算時間檢查點; 206-B.根據(jù)哈希算法進行子數(shù)據(jù)塊哈希摘要的計算;
206-C.每當執(zhí)行到計算時間檢查點,檢查哈希計算時間是否超過最大緩沖時間
206-D.如果哈希計算時間超過T,則轉(zhuǎn)向206-F;否則轉(zhuǎn)向206-C繼續(xù)哈希摘要 的計算;
206-E.暫停哈希計算,將TCP異步接收緩沖區(qū)的數(shù)據(jù)立即取出,以保證底層數(shù) 據(jù)的正常接收;
206-R重置定時器,轉(zhuǎn)向206-B,從暫停的位置開始繼續(xù)執(zhí)行哈希摘要計算的后 續(xù)流程;
206-G.結(jié)束哈希塊摘要的計算,完成文件塊哈希向量的更新。 下面,以采用BitTorrent協(xié)議下載數(shù)據(jù)為例說明本方法的具體實施,并假設(shè)下載 節(jié)點的平臺參數(shù)如下文件哈希計算的速率大約是53MB/s,網(wǎng)絡(luò)帶寬為100Mbps, TCP異步接收緩沖區(qū)大小為64KB。根據(jù)公式(i),可以計算得到最佳子數(shù)據(jù)塊長度 Zmax = 271KB ,為了避免測量誤差帶來的影響,實際使用中可以取 Zma:r = 256KB。假設(shè)下載的文件長度為4GB,文件塊長度為4MB,貝ij,可以根據(jù) 公式(ii)計算得到每一個文件塊可以分為k=16個子數(shù)據(jù)塊,根據(jù)公式(iii)可以 計算得到最后一個子數(shù)據(jù)塊的長度^st = 256KB,其它子數(shù)據(jù)塊的長度為256KB。
由于BitTorrent采用SHA1哈希算法來計算每個文件塊的哈希值,并對其進 行校驗,結(jié)合本發(fā)明所提延遲隱藏方法后,其文件塊的哈希計算步驟如下
步驟301、根據(jù)SHA1標準算法,設(shè)置文件塊的初始哈希向量;
步驟302、從伙伴節(jié)點接收一個子數(shù)據(jù)塊;
步驟303、判斷該子數(shù)據(jù)塊是否是最后一個子數(shù)據(jù)塊,若是則轉(zhuǎn)向步驟304, 否則轉(zhuǎn)向步驟305;
步驟304、在最后一個子數(shù)據(jù)塊末尾追加1比特'1',而后追加k比特'O',使 得消息總長度模512后等于448。最后追加8字節(jié)文件塊的總長度。
步驟305、將追加信息后的子數(shù)據(jù)塊分為長度為512比特的N個子消息塊 Chun剛;
步驟306、根據(jù)SHA1標準算法,順序計算每一個Chunk的摘要信息,并用 計算結(jié)果更新文件塊的哈希向量,更新方法如圖3中對應(yīng)步驟所示;
步驟307、如果該子數(shù)據(jù)塊是最后一個子數(shù)據(jù)塊,則轉(zhuǎn)向步驟308,則否轉(zhuǎn) 向步驟302;步驟308、將文件塊的哈希向量按照圖3中對應(yīng)的步驟所示,拼接起來,生 成最終的文件塊的哈希值;
在步驟306計算子數(shù)據(jù)塊摘要的過程中,為了避免因為下載節(jié)點性能的波動引 起計算時間增加,還需要采取以下步驟
306-A.開始計算時,設(shè)置計算定時器,用來測量計算哈希所耗費的時間,并根 據(jù)所采用的SHA1哈希算法,在計算流程中每計算512比特數(shù)據(jù)就設(shè)置一個時間檢 查點;
306-B.根據(jù)哈希算法進行子數(shù)據(jù)塊哈希摘要的計算;
306-C.每當執(zhí)行到計算時間檢查點,檢查哈希計算時間是否超過最大緩沖時間
306-D.如果哈希計算時間超過r,則轉(zhuǎn)向206-E。否則轉(zhuǎn)向206-B繼續(xù)哈希摘要 的計算;
306-E.暫停哈希計算,將TCP異步接收緩沖區(qū)的數(shù)據(jù)立即取出,以保證底層數(shù) 據(jù)的正常接收;
306-F.重置定時器,轉(zhuǎn)向206-B,從暫停的位置開始繼續(xù)執(zhí)行哈希摘要計算的后 續(xù)流程;
306-G結(jié)束哈希塊摘要的計算,完成文件塊哈希向量的更新。 最后所應(yīng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管 參照實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,對本發(fā)明 的技術(shù)方案進行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均 應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。
權(quán)利要求
1、一種P2P下載文件完整性校驗方法,該方法根據(jù)下載客戶端的特征參數(shù)將文件塊分為子數(shù)據(jù)塊,當接收到一個子數(shù)據(jù)塊時,利用哈希算法,計算該子塊的哈希摘要,并更新文件塊的哈希向量;當下載并計算完最后一個子塊的哈希值時,隨即生成文件塊的哈希值,在下載過程中對文件完整性校驗延遲進行隱藏;所述的P2P下載文件完整性校驗方法包括以下步驟(1)下載節(jié)點從種子文件服務(wù)器下載種子文件;下載過程中進行文件完整性校驗的過程包括從節(jié)點請求下載指定文件塊數(shù)據(jù),以所確定的子數(shù)據(jù)塊的大小為單位,從節(jié)點順序接收數(shù)據(jù);(2)下載節(jié)點根據(jù)平臺哈希計算能力、下載帶寬和TCP異步接收緩沖區(qū)大小,計算能夠隱藏哈希計算延遲的最大子數(shù)據(jù)塊長度lmax,并根據(jù)計算所得的最大子數(shù)據(jù)塊大小將文件分為多個子數(shù)據(jù)塊;(3)下載節(jié)點通過種子文件里的中央索引服務(wù)器地址,登錄中央索引服務(wù)器,請求擁有下載文件數(shù)據(jù)的節(jié)點列表;(4)下載節(jié)點從中央索引服務(wù)器返回的節(jié)點列表中選擇伙伴節(jié)點,并同時向多個所選擇的伙伴節(jié)點分別請求下載不同的文件塊;(5)下載節(jié)點將文件塊分為k個子數(shù)據(jù)塊;(6)下載節(jié)點從伙伴節(jié)點接收數(shù)據(jù),并在接收過程中幾乎同步完成文件塊哈希值的計算;(7)用計算出的文件塊的哈希值與種子文件中,該文件塊的原始哈希值進行比較,如果一致,則表明該文件塊是沒有篡改過的合法數(shù)據(jù),將其存入文件中,否則,丟棄該文件塊,并向其它節(jié)點請求下載該文件塊;(8)重復(fù)步驟(4)到(7)直到整個文件下載完成。
2、 根據(jù)權(quán)利要求1所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟(2)中計算最大子數(shù)據(jù)塊長度的方法,根據(jù)下載平臺哈希計算能力、網(wǎng)絡(luò)帶寬和TCP異步接收緩沖區(qū)的大小按照公式(i)計算出最大子數(shù)據(jù)塊的長度<formula>formula see original document page 2</formula>式(i)中,b是TCP異步接收緩沖區(qū)大小,單位字節(jié);W是平臺每秒哈希計算的字節(jié)數(shù),單位字節(jié)/秒;V是平臺網(wǎng)絡(luò)下載帶寬,單位字節(jié)/秒。
3、 根據(jù)權(quán)利要求1所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟(5)中數(shù)據(jù)塊劃分為k個子數(shù)據(jù)塊的方法,子數(shù)據(jù)塊數(shù)目k由公式(ii)計算得到;最后一個子數(shù)據(jù)塊的長度&asf由公式(iii)計算得到;其它子數(shù)據(jù)塊長度為〖max,由公式(i)計算得到<formula>formula see original document page 3</formula>
4、 根據(jù)權(quán)利要求1所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟(6)中文件塊數(shù)據(jù)的接收方法中,下載節(jié)點按步驟(5)所確定的各個子數(shù)據(jù)塊的長度為單位,從伙伴節(jié)點順序接收各個子數(shù)據(jù)塊的數(shù)據(jù)。
5、 根據(jù)權(quán)利要求1所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟(6)中計算文件塊哈希值的方法中,下載節(jié)點每從伙伴節(jié)點接收到一個塊子數(shù)據(jù)塊就計算該子數(shù)據(jù)塊的哈希摘要,并更新文件塊的哈希向量;接收完最后一個子數(shù)據(jù)塊并完成文件塊哈希向量的最終更新后,由文件塊哈希向量生成整個文件塊的哈希值。
6、 根據(jù)權(quán)利要求5所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟(6)中計算子數(shù)據(jù)塊的哈希摘要的方法,包括以下步驟A. 開始計算時,設(shè)置計算定時器,用來測量計算哈希所耗費的時間,并根據(jù)所釆用的哈希算法,在計算流程中設(shè)置合適的計算時間檢查點;B. 根據(jù)哈希算法進行子數(shù)據(jù)塊哈希摘要的計算;C. 每當執(zhí)行到計算時間檢查點,檢查哈希計算時間是否超過最大緩沖時間T;D. 如果哈希計算時間超過T,則轉(zhuǎn)向E;否則轉(zhuǎn)向B繼續(xù)哈希摘要的計算;E. 暫停哈希計算,將TCP異步接收緩沖區(qū)的數(shù)據(jù)立即取出,以保證底層數(shù)據(jù)的正常接收;F. 重置定時器,轉(zhuǎn)向B,從暫停的位置開始繼續(xù)執(zhí)行哈希摘要計算的后續(xù)流程;G. 結(jié)束哈希塊摘要的計算,完成文件塊哈希向量的更新。
7、 根據(jù)權(quán)利要求6所述的P2P下載文件完整性校驗方法,其特征在于,所述的步驟C中,獲得最大緩沖時間T需要按照公式(W)進行計算
全文摘要
本發(fā)明涉及一種P2P下載文件完整性校驗方法,該方法根據(jù)下載客戶端的特征參數(shù)將文件塊分為子數(shù)據(jù)塊,當接收到一個子數(shù)據(jù)塊時,利用哈希算法,計算該子塊的哈希摘要,并更新文件塊的哈希向量;當下載并計算完最后一個子塊的哈希值時,隨即生成文件塊的哈希值,在下載過程中對文件完整性校驗的延遲進行隱藏;本發(fā)明充分利用了TCP異步接收緩沖區(qū),使得P2P下載過程中的校驗的延遲可以被完全隱藏,有效提高了P2P下載的效率,特別是嵌入式平臺的上的P2P下載的效率。而且本發(fā)明不依賴于具體的校驗框架或者協(xié)議,特別是本方法的核心思想,可以直接應(yīng)用到現(xiàn)有的P2P下載協(xié)議中,如eMule協(xié)議和BitTorrent協(xié)議,具有較強的實用性。
文檔編號H04L29/08GK101651709SQ20091009193
公開日2010年2月17日 申請日期2009年9月1日 優(yōu)先權(quán)日2009年9月1日
發(fā)明者鵬 孫, 王勁林, 賀鵬程, 鄧浩江 申請人:中國科學(xué)院聲學(xué)研究所