eMule文件损坏如何处理

答案 eMule(电骡)使用多种方法来确保网络中下载和共享的文件没有错误。当错误发生时,或称作损坏时,eMule拥有的高级功能仅需要重新下载最少量的数据就能修复这种损坏。文件Hash和ICH - 智能损坏处理 文件Hash,文件段Hash值和Hashset 每一个被共享的文件在网络中都会由MD4数学

232977

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

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

文件Hash,文件段Hash值和Hashset

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

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

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

为了确保eMule始终接收到正确的Hashset,可以创建一个特殊的包含Hashset的链接,例如: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

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

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

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

eMule可以创建包含根Hash值的链接,例如:

其中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功能将无法使用。

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

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

图片声明:本站部分配图来自人工智能系统AI生成,国外stocksnap摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国外贸事业出一份力,发布内容不收取任何费用也不接任何广告!
 

  • 热门焦点
  • 顺丰快递从上海到哈尔滨需要几天

    顺丰快递从上海寄到哈尔滨市区内,最快需要第3天到达收件,一般是不超过第4天上午。。。从上海到哈尔滨市有2270公里左右,已经是很远了,但现在的交通也很发达,快递也比较快。如果顺
    08-12
  • 京东快递跨省几天能到

    京东快递跨省一般1-3天的时间能到。在京东商城和京东自营买东西,一般采用京东快递配送。购买的商品一般是24小时内发货,一般到货时间是1-3天。如果是进驻商家,快递合作方由商家
    08-12
  • 正在通知快递取件一般要等多久

    正在通知快递取件一般要等2个小时左右,如果是约定取件,快递员会在约定的时间内上门取件。当商家发货后,快递公司会在1-2个工作日内到达商家所在地,并进行取件。然而,具体时间还要
    08-18
  • 怎样查询邮政的快递信息?

    进入到邮政官方,在邮件查询方式里选择手机号查询,输入手机号码和验证码,就可以查询了。操作方法如下:1、首先打开浏览器,输入邮政点击官网进入。2、进入之后点击邮件查询。3、在左侧的导航栏里继续点击邮件查询。4、然后选择手机号查询。5、输入手机号码并填写相关的信息后点
    09-24
  • 顺丰快递需要填写什么资料

    顺丰快递需要填写什么资料 顺丰快递需要填写寄件人地址,寄件人电话,收件人地址,收件人电话,物品名称,物品重量,物品体积,付款方式这些资料,以下是顺丰快递单据的填写方法: 1、填写寄件人资讯 首先要拿到一张顺丰空白快递单,填写寄件人资讯,公司名称可以根据实际情况可写可不写;联
    09-03
  • 为什么我的快递显示已签收却没有取件码?

    取件码是需要入库上架之后的,快递显示已经代收了,说明快递员已经把快递交给了代收点,比如说菜鸟驿站,但是菜鸟驿站还没来得及上架,所以没有取件码。快递又称速递或快运,是指物流
    08-18
  • 一对20公斤哑铃要邮走大概多少邮费哈尔滨到齐齐哈尔

    特快专递资费:20元/500克,每加量500克加收6元。共134元邮费。(包装费另算)快递包裹资费:与特快专递的资费约等于一半。(包装费另算)普通包裹资费:1.2元/1000克在加三元挂号费。(
    08-11
  • 菜鸟驿站不扫码出库有影响吗

    菜鸟驿站不扫码出库没有影响。菜鸟没有扫码出库直接拿走没有影响,系统会自动签收的。在购物时,如果时间上不方便接收快递,可以选择由菜鸟驿站代为签收,快递到达菜鸟驿站后,菜鸟驿
    08-18
  • 中铁单位有多少局?都分布在哪,子公司在哪

    1、中国铁路工程总公司:北京市西客站南广场中铁工程大厦;2、中铁一局集团有限公司:西安市雁塔北路1号;3、中铁二局集团有限公司:成都市马家花园路10号;4、中铁三局集团有限公司:太原市迎泽大街269号;5、中铁四局集团有限公司:合肥市望江东路96号;6、中铁五局集团有限公司:贵阳市枣山
    09-03
  • 中国邮编是多少, Zip code是什么啊?

    您好!中国的邮政编码是6位数,在世界任何一个地方往中国寄件都是填写6位邮编。Zip Code 是美国邮编的叫法从国外寄信件到中国大陆如何填写邮编?直接填写大陆地址对应的邮编即可
    08-12
  • 邮政快递营业时间表

    早上8点至下午6点。根据查询中国邮政官网显示,邮政快递营业时间是周一至周日早上8点至下午6点,节假日不休息。邮政快递主要经营国内速递、国际速递、合同物流等业务,是中国速递
    08-12
  • 韵达快递货物寄出后多长时间能查到物流信息

    一般情况下快递到店会进行录单,便可在官网上查询,此时提示“xxxx网点已揽件”包括发出时间、地点、货物状态都会详细记录的,单号查询可在韵达官网可查询详细的记录通常当天上午
    08-11
  • 国际邮寄包裹资费标准?

    国内邮件资费 (2004年1月1日起执行) 单位:元 编号 业务种类 计费单位 资费标准 本埠(县)资费 外埠资费 1 信函 首重100克内,每重20克 (不足20克按20克计算) 0.60 0.80 续重101-2000
    08-13
  • 有什么快递公司可以往国外寄东西?

    国际快递是指在全球提供门到门服务的公司,主要的公司有:①EMS : 国家邮局国际特快专递,由到达国的邮局派送。国内的如顺丰、韵达申通快递都是有开通部分国际业务。②四大国际巨
    08-12