网络指南

网络指南
从0.42.1版开始,eMule(电骡)就具有了两个不同特征的网络——传统的基于服务器的eD2K网络(eDonkey2000 Network - 电驴网络)和一个基于Kademlia的全新的无服务器拓扑结构网络。
本质上两个网络的作用一致。它们两者都分别提供一种寻找其他用户及你想下载的文件的方法。

基础知识

文件识别
所有文件都有一个Hash——哈希值(指纹)。Hash是独一无二地标识文件的字母和数字。一个文件的文件名可能千变万化,但文件的Hash却不会因此改变。因而不管其他用户给这个文件起了什么名字,每个用户都可以找到这个文件的来源。
另外,文件会被分割成 9.28 兆大小的文件片段。每个片段都有Hash标识。举例来说,一个600兆的文件会被分成65个片段,接着每个片段会被标上Hash。然后文件的Hash就根据这些文件片段的Hash被计算出来,并用在网络中作为文件标识。

其他客户端的识别
正如文件Hash一样,每一个网络中的用户都有一个永久性的Hash。这种用户识别依靠一个公钥/私钥交握机制的强力保障以防止滥用。

数据下载
应当要理解的是 eMule实际的下载与两个网络的选择无关。两个网络的拓扑结构只与文件搜索以及为文件寻找来源客户端有关。
在找到来源之后,你的客户端就会连接上它。来源客户端会将该下载任务排到等候队列中。在过了一段等候时间后排到了队列第一位时,就轮到你来接收它的数据了。

传统的基于服务器的eD2k

与网络的连接
eD2k网络的核心是eD2k服务器。要连上该网络的客户端须先连接到一个服务器。
当你的客户端连接到服务器的时候,服务器会检查别的客户端是否能不受限制地连接到你的客户端。如果能,服务器就会给你的客户端指派一个所谓的High ID(高ID)。如果通信受到阻碍,服务器就会给你指派一个Low ID(低ID)。
收到指派的ID后,eMule会将共享文件的列表发给服务器。服务器会将这列表里的文件名与Hash记录到它的数据库。

文件搜索
连接到网络后,客户端就可以按文件名关键字搜索文件。搜索可以是本地的或是全局的。对于本地搜索(只在你连接到的服务器中搜索),其搜索速度快但结果较少。对于全局搜索(在网络上所有的服务器中搜索),其所花时间较长但结果更多。搜索时,每个的服务器都在它的本地数据库中查找并返回任何包含关键字的文件名(与Hash)。

搜索文件来源
添加下载任务可以通过 eMule的搜索功能或是很多网站提供上的eD2k链接。
一旦任务添加到下载列表,eMule先向本地(连接到的)服务器后向所有网络上其他的服务器查寻该下载任务的来源。每个服务器会在它的数据库中寻找该文件的 Hash并返回数据库中拥有该文件的客户端。
文件来源是其他至少拥有相同Hash的文件的一个片段(9.28兆)的那些客户端。

无服务器的Kademlia网络

与网络的连接
连接到这个网络只需要任何一个已经连接到这个网络的eMule客户端的IP地址和相应端口。这被称作【引导程序】。
一旦一个客户端连接到了网络,这个客户端就会请求其他客户端判断自己是否能不受限制地被连接上。这个过程与服务器判断 HighID/LowID 很相似。若连接不受限制,你就被会指派一个ID(类似于HighID)并标为开放状态。若连接收阻碍,你就被标为通过防火墙状态。从v.44a 版本开始,Kademlia网络为通过防火墙状态的用户提供了 Buddy(搭档)功能。Buddies(搭档)是其他拥有开放状态的Kademlia客户端。他们为那些通过防火墙状态的用户担任中继站,并帮着处理那些通过防火墙状态的用户所无法处理的连接。

Kademlia上的文件搜索
在这个网络里不论你搜索什么方法都-样。搜索文件名、下载来源或是其他用户的过程是一样的。
网络中没有服务器记录各个客户端和它们共享的文件-本质上,每一个客户端都又是一个小服务器。
由于每个客户端都由独一无二的Hash,Kademlia的理念是依靠Hash赋予客户端一些“责任”。每个Kademlia网络中的客户端都成为提供某些关键词和来源的服务器。客户端的Hash决定了它所提供的关键词和来源。
因此,每种搜索的目标就是找到对当前搜索主题负有责任的客户端。这个过程依赖于通过询问其他客户端获得通往目标客户端的最短路径,以此来推出自己与目标客户端的大致距离的复杂计算。

总结

两个网络用完全不同的理念来做相同的事:搜索文件和寻找来源。Kademlia网络的主要目标是独立于服务器并提高可扩容性。服务器只能处理有限数量的用户,而且大型服务器会拖累网络。
Kademlia有自组织性,并且它可以依照用户数量和其连接质量来自我调整。因此,它更能防止大型网络中的传输损失。


网络指南》,由孙山翻译自eMule官方网站英文版帮助与支持《Network Guide》。已编入官网简体中文版《网络指南》。英文原文最后由Monk更新于2004年9月12日。

4条评论隐藏

  1. #1 yfdyh000
    2010年12月21日 周二 17:23 | 回复

    从版本 v.42.1 开始,eMule 运用了两个不同的网络
    从 0.42.1 版开始,eMule 就具有了两个不同特征的网络

    她们都分别允许你找到其他的用户以及你要下载的文件。
    它们两者都分别提供一种寻找其他用户或你想下载的文件的方法。

    因而不管其他用户给文件起了什么名字
    因而不管其他用户给这个文件起了什么名字

    俩网络的拓补结构
    两个网络的拓补结构

    此篇文章中多处“她”应为“它”
    此篇文章使用了多处英文逗号,应改为中文逗号

    PS:我希望参与eMule中文帮助的翻译和校对,请问有什么要求以及和谁联系?

  2. 2010年12月21日 周二 17:41 | 回复

    @yfdyh000 没有什么特别要求,翻译的工作已经基本完成,现在主要是进行校对,大家有兴趣都可以参与。 :)

  3. #3 孙山
    2011年1月7日 周五 00:25 | 回复

    @yfdyh000 改正了(吧)。谢谢!

  4. #4 Orly
    2014年5月6日 周二 14:33 | 回复

    我搜索时选择全局(服务器)或者服务器,都会显示未连接服务器,但用自动能搜到并下载,是什么原因呢?

发表评论

您的Email将不会显示出来。头像请至Gravatar.com注册上传。*号标注项为必填。

如果您想输入中文却暂时没有中文输入法程序,可以使用在线的

*
*
*
标签用法
表情:
:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?:
字数:0