| 導購 | 订阅 | 在线投稿
分享
 
 
 

電驢文件損壞的處理問題

2008-07-28 07:49:18  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||

eMule 使用各種的方式來確保文件在網絡共享及下載沒有錯誤. 萬一錯誤發生, 稱爲損壞, eMule 有進階功能以最小的額外重新下載資料量來修正這個損壞.

文件哈希值和 ICH - 智慧型損壞處理

文件哈希值, 部分哈希值 & 片段哈希值

在網絡共享的每個文件有一個獨一無二的識別值是由 MD4 密碼數學運算所建立. 這個值稱爲文件哈希值並且每個標准的 eD2k 鏈接都有包含, 例如

ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|/

其中 6744FC42EDA527B27F0B2F2538728B3E 是文件哈希值以確定這個文件在整個網絡是獨一無二的被識別出.

這個 文件哈希值 是將文件劃分爲 9.28 MB 爲一個部分所計算出來. 每個部分的部分哈希值也是使用相同的 MD4 運算方式計算出來. 那些 部分哈希值, 稱爲 片段哈希值, 並且它是使用來計算出最終的文件哈希值. 例如一個 600 MB 文件被劃分爲 65 個部分每個部分都有它自己的 部分哈希值 而它是用來建立最終的 文件哈希值.

爲確保 eMule 總是接收到正確的一個特別的鏈接能包含片段哈希值, 例如

ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E| p=264E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/

其中 p= 值表示 片段哈希值. 每個 部分哈希值 是由 「:」 來區隔. 這個文件大小爲 12043984 位元組 (=11.49 MB) 這表示它有一個完整的 9.28 部分和剩下的到 11.49 MB 部分爲二個 部分切細片段.

ICH 智慧型損壞處理

無論何時 eMule 完成某一個部分它將會被檢查, 假如下載的資料和部分哈希值一樣這個將成爲已完成部分. 如果是, 這個部分會提供上傳來幫助文件的散布.

假如不是, 一個損壞發生且這部分會再次下載. 爲避免下載全部 9.28 MB, ICH 從這部分的開頭 180 KB 重新下載並且再次檢查部分是否完整. 假如不是, 下一個 180 KB 會再下載, 並再次檢查. 直到部分哈希值正確爲止. 最佳情況下假如損壞只在部分的開頭 eMule 只再次下載 180 KB. 最差的情況可能會整個重新下載. 在部分的損壞 ICH 平均可節省 50%.

AICH - 進階智慧型損壞處理

標准的 ICH 是相當有效的雖然它有它的限制只在整個 9.28 MB 能被驗證並且沒有完美的區塊. 假如超過一個以上的位置是損壞或是惡意客戶端一再的散布損壞的資料或甚至是假的 部分哈希值, ICH 再也沒有能力去處理.

在這裏 AICH 將會考慮完全的完整資料用一個最小重新下載量或者由建立非常完美的哈希值來管理.

根哈希值, 區塊哈希值 & AICH 片段哈希值

這次我們的起點是在一個文件的 9.28 MB 部分. 每個部分是被分割成 180 KB 的區塊, 在每個部分將會産生 53 個區塊並且每個區塊使用 SHA1 切細運算方式計算出哈希值. 那些值稱爲 區塊哈希值 並且根據一個低標准的一個完整 AICH 片段哈希值.

在上面的圖片是顯示一個完整的哈希值樹狀圖如何建立在一個完整 4 部分文件的區塊. 每個部分包含 53 個區塊産生出 212 個 區塊哈希值 其中建立在一個切細樹狀的第七層直到 根哈希值 到達時. 這整個樹狀稱爲 AICH 片?喂V?.

綠色和黃色點顯示小型的 區塊哈希值 到 根哈希值 之數學相關性. 這個表示假如我們有一個可信任的根哈希值整個樹狀能被逆向的來驗證它.

eMule 能建立包含根哈希值的鏈接, 例如

ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E| h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/

其中 h= 是 根哈希值. 由提供一個可信賴的 根哈希值 並發布它應該能有明顯的改善文件的損壞抵抗性. 閱讀 根哈希值的信任

從一個損壞還原

無論何時 eMule 在一個部分偵測到一個損壞它需要用一個完整 AICH 哈希值資料從隨便一個客戶端中取得一個還原封包. 這個還原封包包含在切細樹狀整體損壞部分的全部 53 個 區塊哈希值 和一個 驗證哈希值 的號碼. 上面圖片顯示一個 4 部分文件的一個還原封包. 驗證哈希值 的號碼是由文件的分割部分數量來決定 (2^x >= 『部分數量』, 用 x = 驗證哈希值號碼).

接收還原封包之後 eMule 檢查 驗證哈希值 逆向確認它的根哈希值. 假如它們相符, 電驢從還原封包的 區塊哈希值 逆向檢查損壞部分的全部 53 個區塊. AICH 能還原全部區塊用它們的 區塊哈希值 逆向相符來讓只有損壞的區塊重新下載.

根哈希值的信任

最佳的方式是從有 根哈希值 的鏈接來下載. 假定這個鏈接的來源是可信任的根哈希值而一但受信任將會把這個文件的根哈希值儲存在磁盤.

假如不是由鏈接提供的根哈希值而是由文件的來源送出的 eMule 也會去信任這根哈希值. 它只會在一個 根哈希值 最少 10 個不同的來源送出相同的值和最少全部 92% 的來源同意這個值才會去相信它是真的. 因爲這個 根哈希值 不是那麽可靠它只有效于目前工作階段並且不能儲存也不能用 根哈希值 建鏈接.

一旦 電驢建立整個 AICH 片段哈希值, 例如:文件已經完成, 它將開始傳播 根哈希值 給其他的客戶端.

注意:

• 新釋放或罕見的文件將也許沒有足夠的完整來源來産生一個可信任的 根哈希值. 建議釋放文件時包含這個哈希值.

• 在一般情況下假如在那裏沒有 根哈希值 或甚至是一個僞造的電驢將能夠成功下載並且完成這個文件. 而 AICH 特性不能使用在這種情況.

• 如同 AICH 片段哈希值能非常大他們不儲存在內存但存在 known2.met 並且只能做讀取需求.

• AICH 將只能在 eMule 客戶端 v.44a 及更新版本有效但保留舊客戶端的向下相容性.

eMule 使用各種的方式來確保文件在網絡共享及下載沒有錯誤. 萬一錯誤發生, 稱爲損壞, eMule 有進階功能以最小的額外重新下載資料量來修正這個損壞. 文件哈希值和 ICH - 智慧型損壞處理 文件哈希值, 部分哈希值 & 片段哈希值 在網絡共享的每個文件有一個獨一無二的識別值是由 MD4 密碼數學運算所建立. 這個值稱爲文件哈希值並且每個標准的 eD2k 鏈接都有包含, 例如 ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|/ 其中 6744FC42EDA527B27F0B2F2538728B3E 是文件哈希值以確定這個文件在整個網絡是獨一無二的被識別出. 這個 文件哈希值 是將文件劃分爲 9.28 MB 爲一個部分所計算出來. 每個部分的部分哈希值也是使用相同的 MD4 運算方式計算出來. 那些 部分哈希值, 稱爲 片段哈希值, 並且它是使用來計算出最終的文件哈希值. 例如一個 600 MB 文件被劃分爲 65 個部分每個部分都有它自己的 部分哈希值 而它是用來建立最終的 文件哈希值. 爲確保 eMule 總是接收到正確的一個特別的鏈接能包含片段哈希值, 例如 ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E| p=264E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/ 其中 p= 值表示 片段哈希值. 每個 部分哈希值 是由 「:」 來區隔. 這個文件大小爲 12043984 位元組 (=11.49 MB) 這表示它有一個完整的 9.28 部分和剩下的到 11.49 MB 部分爲二個 部分切細片段. ICH 智慧型損壞處理 無論何時 eMule 完成某一個部分它將會被檢查, 假如下載的資料和部分哈希值一樣這個將成爲已完成部分. 如果是, 這個部分會提供上傳來幫助文件的散布. 假如不是, 一個損壞發生且這部分會再次下載. 爲避免下載全部 9.28 MB, ICH 從這部分的開頭 180 KB 重新下載並且再次檢查部分是否完整. 假如不是, 下一個 180 KB 會再下載, 並再次檢查. 直到部分哈希值正確爲止. 最佳情況下假如損壞只在部分的開頭 eMule 只再次下載 180 KB. 最差的情況可能會整個重新下載. 在部分的損壞 ICH 平均可節省 50%. AICH - 進階智慧型損壞處理 標准的 ICH 是相當有效的雖然它有它的限制只在整個 9.28 MB 能被驗證並且沒有完美的區塊. 假如超過一個以上的位置是損壞或是惡意客戶端一再的散布損壞的資料或甚至是假的 部分哈希值, ICH 再也沒有能力去處理. 在這裏 AICH 將會考慮完全的完整資料用一個最小重新下載量或者由建立非常完美的哈希值來管理. 根哈希值, 區塊哈希值 & AICH 片段哈希值 這次我們的起點是在一個文件的 9.28 MB 部分. 每個部分是被分割成 180 KB 的區塊, 在每個部分將會産生 53 個區塊並且每個區塊使用 SHA1 切細運算方式計算出哈希值. 那些值稱爲 區塊哈希值 並且根據一個低標准的一個完整 AICH 片段哈希值. 在上面的圖片是顯示一個完整的哈希值樹狀圖如何建立在一個完整 4 部分文件的區塊. 每個部分包含 53 個區塊産生出 212 個 區塊哈希值 其中建立在一個切細樹狀的第七層直到 根哈希值 到達時. 這整個樹狀稱爲 AICH 片?喂V?. 綠色和黃色點顯示小型的 區塊哈希值 到 根哈希值 之數學相關性. 這個表示假如我們有一個可信任的根哈希值整個樹狀能被逆向的來驗證它. eMule 能建立包含根哈希值的鏈接, 例如 ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E| h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/ 其中 h= 是 根哈希值. 由提供一個可信賴的 根哈希值 並發布它應該能有明顯的改善文件的損壞抵抗性. 閱讀 根哈希值的信任 從一個損壞還原 無論何時 eMule 在一個部分偵測到一個損壞它需要用一個完整 AICH 哈希值資料從隨便一個客戶端中取得一個還原封包. 這個還原封包包含在切細樹狀整體損壞部分的全部 53 個 區塊哈希值 和一個 驗證哈希值 的號碼. 上面圖片顯示一個 4 部分文件的一個還原封包. 驗證哈希值 的號碼是由文件的分割部分數量來決定 (2^x >= 『部分數量』, 用 x = 驗證哈希值號碼). 接收還原封包之後 eMule 檢查 驗證哈希值 逆向確認它的根哈希值. 假如它們相符, 電驢從還原封包的 區塊哈希值 逆向檢查損壞部分的全部 53 個區塊. AICH 能還原全部區塊用它們的 區塊哈希值 逆向相符來讓只有損壞的區塊重新下載. 根哈希值的信任 最佳的方式是從有 根哈希值 的鏈接來下載. 假定這個鏈接的來源是可信任的根哈希值而一但受信任將會把這個文件的根哈希值儲存在磁盤. 假如不是由鏈接提供的根哈希值而是由文件的來源送出的 eMule 也會去信任這根哈希值. 它只會在一個 根哈希值 最少 10 個不同的來源送出相同的值和最少全部 92% 的來源同意這個值才會去相信它是真的. 因爲這個 根哈希值 不是那麽可靠它只有效于目前工作階段並且不能儲存也不能用 根哈希值 建鏈接. 一旦 電驢建立整個 AICH 片段哈希值, 例如:文件已經完成, 它將開始傳播 根哈希值 給其他的客戶端. 注意: • 新釋放或罕見的文件將也許沒有足夠的完整來源來産生一個可信任的 根哈希值. 建議釋放文件時包含這個哈希值. • 在一般情況下假如在那裏沒有 根哈希值 或甚至是一個僞造的電驢將能夠成功下載並且完成這個文件. 而 AICH 特性不能使用在這種情況. • 如同 AICH 片段哈希值能非常大他們不儲存在內存但存在 known2.met 並且只能做讀取需求. • AICH 將只能在 eMule 客戶端 v.44a 及更新版本有效但保留舊客戶端的向下相容性.
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有