eMule文件损坏如何处理

2016-04-01 02:29 6 1 收藏

关注图老师电脑网络栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享eMule文件损坏如何处理教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 软件应用 】

eMule文件损坏如何处理

   eMule(电骡)使用多种方法来确保网络中下载和共享的文件没有错误。当错误发生时,或称作损坏时,eMule拥有的高级功能仅需要重新下载最少量的数据就能修复这种损坏。

eMule文件损坏如何处理 图老师

  文件Hash和ICH - 智能损坏处理

  文件Hash,文件段Hash值和Hashset

  每一个被共享的文件在网络中都会由MD4数学加密算法计算出一个理论上唯一的特征值。这个数值被称作文件Hash值(也作:哈希),并且被包含在每个标准的eD2k链接中。例如:ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|/

  其中6744FC42EDA527B27F0B2F2538728B3E就是该文件的文件Hash值,也即文件在网络的独一无二的特征值。

  文件Hash值通过将文件分割成每个9.28 MB的文件段然后计算得来,每一个文件段都用相同的MD4算法得到一个文件段Hash值。用这些被称作Hashset的文件段Hash值,可以接着计算出最终的文件Hash值。例如,一个600MB的文件将被切分成65块文件段,每一个都有自己的文件段Hash值,然后用它们计算得到最终的文件Hash值。

  为了确保eMule始终接收到正确的Hashset,可以创建一个特殊的包含Hashset的链接,例如:  ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|p=264E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/

  其中p=后面的数值表示了Hashset。每一个文件段Hash值使用一个半角冒号:来分隔开。例子中的文件大小为12043984字节(=11.49 MB),也就是说它被分割成两个文件段,一个完整的9.28MB的文件段和一个剩余大小的文件段,各自拥有自己的文件段Hash值。

  ICH 智能损坏处理

  当eMule完成一个文件段的下载后,它将检查数据是否符合该部分的文件段Hash值。如果正确,则该部分就可以上传来帮助文件传播。

  如果错误,则会报告损坏并重新下载该部分。为了避免重新下载整个9.28MB的数据,ICH将重新下载该文件段开头180KB大小的部分,然后再次检查该文件段Hash值是否正确。如果依旧错误,将继续下载接下来的180KB,并再次检查。直到该部分的Hash值正确为止。最理想的情况下,eMule仅需要重新下载这个文件段开头180KB的正确数据。最坏的情况下,如果损坏的部分在文件段的结尾,则整个文件段都会被重新下载。平均来说,ICH在文件段损坏时可以节省50%的重新下载需要。

  AICH - 高级智能损坏处理

  标准的ICH功能已经非常高效,但是有一个限制是只有整个9.28MB的部分能够被校验,而不是切细。如果不止一个位置出现了损坏,或者一些有害的客户端一次又一次的故意发送一些损坏的数据,甚至伪造整个文件段Hash值,则ICH将不再有效。

  而AICH通过更精细的Hash,只需要最小的开销或重新下载的消耗,来照顾到整个数据的完整性。

  根Hash,块Hash & AICH Hashset

eMule文件损坏如何处理

  这一次从9.28MB的文件段开始进行。每一个文件段都被切细成180KB大小的文件块,这样每个文件段可以切分成53个文件块,并且每一个文件块都使用SHA1哈希算法来计算出一个Hash值。这些数值被称作块Hash值,构成了一个完整的AICH Hashset中的最底层。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

  上图展示了一个包含4个文件段的文件如何构造了一个完整的Hash树。每一个文件段包含了53个文件块总计212个块Hash值,这些一直到根Hash构成了一个7级的Hash树。整个Hash树被称作AICH Hashset。

  这些绿色和黄色圆点显示了这些最小的块Hash并直到根Hash之间的数学依赖关系。这意味着如果我们信任根Hash值,那么就可以反过来验证整个Hash树。

  eMule可以创建包含根Hash值的链接,例如:  ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|h=A2NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/

  其中h=后面跟着的为根Hash值。对于发布来说提供一个可信的根Hash值可以显著提高文件损坏的修复能力。

  恢复损坏的数据

  当eMule检测到一个文件段的数据损坏时,会随机向某个客户请求一个包含完整AICH Hash Set的数据恢复包。恢复包里包含了损坏文件段的全部53个块Hash值,以及一个Hash树的校验Hash数量。上图展示了一个包含4个文件段的文件的数据恢复包。校验Hash的数量由文件的文件段计算得来(2^x = '文件段数量',其中x = 校验Hash的数量)。

  在接收到数据恢复包以后,eMule会检查校验Hash来反算可信的根Hash。如果它们匹配,eMule将检查损坏部分的全部53个文件块是否和恢复包里的块Hash值相对应。然后AICH会保存所有匹配它们的块Hash值的文件块,仅仅重新下载损坏的文件块。

  在日志中一次成功的数据恢复会显示类似如下的信息:

  09.09.2004 02:43:43: 下载的文件段 6 已经损坏:([文件名])

  09.09.2004 02:43:46: AICH 成功的恢复了8.22 MB/ 9.28 MB 文件段:6 文件:[文件名]

  信任根Hash(Root Hash)

  最好是从一个带有根Hash的链接进行下载。并假设链接的来源是可靠的,则此文件的根Hash将被信任一次并保存到磁盘中。

  如果链接中没有提供根Hash,则eMule将不得不信任从文件来源那里发送的根Hash值。而且仅会信任至少10个不同来源所发送的相同的根Hash,并且必须有92%的来源都信任这个值。因为这个根Hash是不可靠的,并且仅在当前会话中有效,不会被保存也不会被用来创建带根Hash的链接。

  当eMule建立好一个AICH Hashset时,例如当文件下载完成时,它将传播这个根Hash给其他客户。

  注意:

  新发布的或稀有文件可能没有足够来源来生成一个可信的根Hash。所以强烈建议发布者在发布文件时添加相关的Hash值。

  如果没有根Hash或者甚至得到了一个伪造的,eMule在一般情况下同样可以成功下载并完成文件。但此时AICH功能将无法使用。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

  由于AICH Hashset值非常大,它们不会被载入内存中,但是会被保存到known2.met文件,并仅在需要时读取。

  AICH仅仅支持eMule v.44a及以上版本, 但是保留了对旧版客户端的兼容性。

来源:https://www.tulaoshi.com/n/20160401/2075564.html

延伸阅读
烧伤的症状 烧伤也叫做灼伤、烫伤。大多数人都认为高温是引起烧伤的唯一原因,然而,某些化学物质和电流也能引起灼伤。皮肤常常只是身体烧伤的一部分,皮下组织也可能被烧伤,甚至没有皮肤烧伤时,也可能有内部器官烧伤。按照病情的严重性,可以分为以下几种等级: Ⅰ度烧伤:伤及表皮浅层,基底层尚存。局部皮肤发红、肿胀、疼痛、有烧灼感...
标签: Java JAVA基础
一个网站各个页面的相同之处莫过于头部、导航、尾部,每一个程序手都知道代码重用性的好处。如果我们把这些文件都做成公用文件,那么将大大节省了维护成本。 大型网站的头尾部分和导航部分一般都会做成静态的公用文件。 尾部文件footer块的内容是关于、联系方式、版权等内容,直接做成静态文件便可。 头部文件header和导航menubar往往有两种...
标签: 地板 实木地板
庞先生问:家里地板使用一段时间后,出现裂缝,怎么样处理? 帮办解答:目前很多家庭装修时选择实木地板,而实木地板价格较高。因此,一旦地板出现问题,确实让人头疼。 最常见的事就是地板开裂和使用不当,即使完全合格的产品也会出现质量问题,所以地板的保养很重要。 实木地板在保养时,一定要注意保持地板的干燥、清洁。通常,地板的...
小儿包茎的治疗与护理办法 包茎的治疗与护理 病症:包茎指男性阴茎包皮口狭窄或包皮与阴茎头粘连,使遮盖阴茎的包皮不能上翻。造成包茎的原因多是先天性包皮开口太小。这种病症是男童易发生却又易被家长忽略的缺陷。包茎严重者会出现排尿困难,并可因逆行压力造成肾脏的损害。有时由于尿道口存积尿碱,导致尿道口发炎,更可加重排尿困难。 ...
标签: excel
直接修复法 不知你有没有发现,最新版本的Excel采用先进的技术,可以直接修复受损的文件。如果你的Excel表格只是出现轻微受损而导致文件无法打开的情况下,那么你直接利用Excel的修复功能就可以修复。你需要做的就是直接点击Excel新增的选项“打开并修复”,系统就会直接检查Excel表格中存在的错误,然后,系统就会弹出一个修复对话框,...

经验教程

287

收藏

90
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部