官方上的原文:
http://forum.emule-project.net/index.php?showtopic=58114&st=0智慧型損壞處理 (ICH) 在 donkey 網路中是以區塊來傳輸. 一個區塊為 9MB. 每當完成一個區塊都會檢查是否損壞; 假如沒有損壞, 這個區塊將會變成可用的並且能上載.
正常的狀況下, 損壞的區塊能被完整的重新下載. 假如偵測到損壞時 ICH 嘗試減少重新下載的資料量而這樣就能節省時間.
从统计上说,如果一个区块中有1个字节损坏,ICH平均能节省50%要重新下载的资料量,即只需下载4.62MB就能修复,在最好的情况下,能节省99%(如果重新下载时第一个字节就是要修复的),在最差的情况是要整个区块重下(如果重下的数据中最后一个字节才是要修复的).但是,如果这个区块有多个位置损坏,ICH的作用就变得有限.而且,当遇到有恶意的客户端故意传播坏块时,ICH就没用了,因为这个区块会不断地检测到坏块.
高级智慧型損壞處理 (Advanced Intelligent Corruption Handling)这个系统和ICH不同.AICH由一个新的hashset组成,包含许多180KB的小块,采用的算法是SHA1(160Bits).
emule0.44a会计算所有共享文件的hashset并储存在known2.met.如果你下载的文件时发现损坏,emule会随机选择一个有完整AICH hashset的用户请求一个修复包,修复包最多包含69个hash值(53个是区块的数据信息,1-16个是效验那53个hash值是否与masterhash匹配)你收到修复包后就与损坏区块里的180KB的小块作比较,那就是说,假设一个9.28MB的区块有1个字节损坏,AICH能找到损坏的那个180KB的小块,你只需下载180KB的那个小块就行了.
要让AICH发挥作用,最好把ed2k链接附带AICH hash.如
- ed2k://|file|eMule-0.43b-CN-1-r47.rar|1946779|3659368A01613E8FD60F728657683767|h=4NQG2AAGNAJ2JZN4A4AR7RIJ3I55MLJZ|/
如果不带AICH hash,那么至少要有10个不同ip的用户和92%的共享这个文件的用户都传输相同的AICH hash给你,emule才会信任这个hash.对于稀有文件和新发布的文件,共享的人少,要是链接里不附带AICH hash,emule将不会信任任何AICH hash,甚至相信了一个假的AICH hash,AICH将不会产生作用.
本文不保证完整的翻译正确:D
还望高手多多指点,及时修正
原帖在此:
http://bbs.edonkey2000.cn:18880/forum/viewthread.php?tid=48094