更新时间:2024-05-29 14:46
AICH损坏的处理,eMule 使用各种的方式来确保文件在网络共享及下载没有错误. 万一错误发生, 称为损坏, eMule 有进阶功能以最小的额外重新下载资料量来修正这个损坏.文件哈希值和 ICH- 智慧型损坏处理。
标准的 ICH 是相当有效的虽然它有它的限制只在整个 9.28 MB 能被验证并且没有完美的区块. 假如超过一个以上的位置是损坏或是恶意客户端一再的散布损坏的资料或甚至是假的 部分哈希值, ICH 再也没有能力去处理.
在这里 AICH 将会考虑完全的完整资料用一个最小重新下载量或者由建立非常完美的哈希值来管理.
根哈希值, 区块哈希值 & AICH 片段哈希值
这次我们的起点是在一个文件的 9.28 MB 部分. 每个部分是被分割成 180 KB 的区块, 在每个部分将会产生 53 个区块并且每个区块使用 SHA1 切细运算方式计算出哈希值. 那些值称为 区块哈希值 并且根据一个低标准的一个完整 AICH 片段哈希值.
在上面的图片是显示一个完整的哈希值树状图如何建立在一个完整 4 部分文件的区块. 每个部分包含 53 个区块产生出 212 个 区块哈希值 其中建立在一个切细树状的第七层直到 根哈希值 到达时. 这整个树状称为 AICH 片段哈希值.
绿色和黄色点显示小型的 区块哈希值 到 根哈希值 之数学相关性. 这个表示假如我们有一个可信任的根哈希值整个树状能被逆向的来验证它.
eMule 能建立包含根哈希值的链接, 例如
ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E| h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/
其中 h= 是 根哈希值. 由提供一个可信赖的 根哈希值 并发布它应该能有明显的改善文件的损坏抵抗性. 阅读 根哈希值的信任
无论何时 eMule 在一个部分侦测到一个损坏它需要用一个完整 AICH 哈希值资料从随便一个客户端中取得一个还原封包. 这个还原封包包含在切细树状整体损坏部分的全部 53 个 区块哈希值 和一个 验证哈希值 的号码. 上面图片显示一个 4 部分文件的一个还原封包. 验证哈希值 的号码是由文件的分割部分数量来决定 (2^x >= '部分数量', 用 x = 验证哈希值号码).
接收还原封包之后 eMule 检查 验证哈希值 逆向确认它的根哈希值. 假如它们相符, eMule 从还原封包的 区块哈希值 逆向检查损坏部分的全部 53 个区块. AICH 能还原全部区块用它们的 区块哈希值 逆向相符来让只有损坏的区块重新下载.
在记录中一个成功的还原看起来会像下面列出的:
09.09.2004 02:43:43: 已下载部分 6 损坏了 :( [file])
09.09.2004 02:43:46: AICH 成功的还原 8.22 于 9.28 从部分 6 于 [file]
最佳的方式是从有 根哈希值 的链接来下载. 假定这个链接的来源是可信任的根哈希值而一但受信任将会把这个文件的根哈希值储存在磁盘.
假如不是由链接提供的根哈希值而是由文件的来源送出的 eMule 也会去信任这根哈希值. 它只会在一个 根哈希值 最少 10 个不同的来源送出相同的值和最少全部 92% 的来源同意这个值才会去相信它是真的. 因为这个 根哈希值 不是那么可靠它只有效于目前工作阶段并且不能储存也不能用 根哈希值 建链接.
一旦 eMule 建立整个 AICH 片段哈希值, 例如:文件已经完成, 它将开始传播 根哈希值 给其他的客户端.
· 新释放或罕见的文件将也许没有足够的完整来源来产生一个可信任的 根哈希值. 建议释放文件时包含这个哈希值.
· 在一般情况下假如在那里没有 根哈希值 或甚至是一个伪造的 eMule 将能够成功下载并且完成这个文件. 而 AICH 特性不能使用在这种情况.
· 如同 AICH 片段哈希值能非常大他们不储存在内存但存在 known2.met 并且只能做读取需求.
· AICH 将只能在 eMule 客户端 v.44a 及更新版本有效但保留旧客户端的向下相容性.