eMule协议就是资源丰富的电驴下载了。这个软件的使用笔者也是非常喜欢的。由于一时兴起,我查找了有关于eMule协议的相关知识,整理了一下,在这里分享一下。
eMule协议的由来
eDonkey由Jed McCaleb在2000年创立。采用“多源文件传输协议”(MFTP,the Multisource File Transfer Protocol)。eDonkey索引服务器并不集中在一起的,而是各人私有的,遍布全世界,每一个人都可以运行电驴服务器,同时共享的文件索引为被称为“ed2k-quicklink”的连接,文件前缀“ED2K://”。每个文件都用md5-hash的超级链接标示,这使得该文件独一无二,并且在整个网络上都可以追踪得到。EDonkey可以通过检索分段从多个用户那里下载文件,最终将下载的文件片断拼成整个文件。2002年05月3日Merkur不满意eDonkey 2000客户端并且坚信自己能做出更出色的P2P软件,于是便着手开发。凝聚一批原本在其他领域有出色发挥的程序员,eMule工程就此诞生,目标是将eDonkey的优点及精华保留下来,并加入新的功能以及使图形界面变得更好。现在eMule的最新版本是0.48a(2007年5月20号发布)。
eMule协议是eDonkey的升级版,它的独到之处在于开源。其基本原理和运作方式,也是基于eDonkey,能够直接登录eDonkey的各类服务器。eMule同时也提供了很多eDonkey所没有的功能,比如可以自动搜索网络中的服务器、保留搜索结果、与连接用户交换服务器地址和文件、优先下载便于预览的文件头尾部分等等,这些都使得eMule使用起来更加便利,也让它得到了电骡的美誉。
支持BT协议的P2P应用程序很多,如BitBuddy、FlashBT、BitComet和BitSpirit等,通常BT由如下几部分组成:.torrent文件、种子提供站点、目录服务器和内容发布者/下载者。.torrent文件是一个文本文件,包含了tracker信息和文件信息两部分。tracker信息主要是BT下载中需要用到的tracker服务器的地址和针对tracker服务器的设置;文件信息是指将目标文件计算处理后再根据BT协议的B编码规则网编码后得到的信息。BT的主要原理是把提供下载的文件虚拟分成小相等的块,块小必须为2Kbyte的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中,所以.torrent文件就是被下载文件的“索引”。早期的BT协议只支持tracker服务器,这种目录服务器是集中式目录与分布式查询的混合型;在BT协议的升级版本中,增加了对DHT(分布式Hash表)网络的支持。
BT和eMule协议的宏观比较和分析
eMule从技术层面上说是比BT好很多的,可是由于各种各样的原因,似乎在互联网上eMule并不是很流行。
1.传统连接方式:
BT使用统一的torrent文件先作一个原下载文件的信息记录,然后客户下载后通过torrent的信息与服务器连接并下载,eMule仅有一个文件ID,客户自行与服务器连接再下载;eMule的资源发布更便捷,同时资源更丰富,BT中不同种子之间的用户是分隔的,即使种子中包含的文件是相同的,BT用户之间也无法互通连接。
2.底层传输协议比较:
BT只使用TCP协议进行下载,协议简单有效,但是功能比较单一,有的功能不完整,eMule协议使用TCP和UDP两种协议进行通信,更加有效的利用了网络资源,功能完整强,但这也同时使主机的负荷增加;
3.文件组织方式和数据验证方式:
BT会在开始前对文件进行一次完全的HASH,就是将文件首尾相联然后按固定块取SHA值,这些值最终被放入torrent文件编码中,客户从网上一次下载完全,高效简单,一般情况下BT软件会在每小块下载完成后就对其进行HASH测试,检查其正确性。eMule在链接字符串中只存放了整体文件的HASH值,通过将这个HASH到服务器上取出文件的相关信息,实际的操作中,会将文件分解成9.28M小的块并进行HASH用于对块的完整性测试。新版的eMule协议会用一种叫AICH的技术,就是说将文件分成80K小的块然后HASH再将HASH值进行二进迭代式(具体的看eMule协议)的HASH最终组成一个HASH二叉树。好处:可以在链接中只加入根结节的HASH值而不用加入叶子节点,减小了链接字符串小,如果在最终文件下载完毕后,测试出的根节点HASH与得到的根节点的HASH值不同,则可以通过协议与网络上的其它主机的树进行比较快速得出错误的块。
4.流量控制方式:
BT采用针锋相对的方式处理上传下载平衡的控制,这种方式会记录短期内与客户连接的所有节点的上传下载流量,通过在固定时间内对下载流量的比较,得出允许上传的客户;为防止新客户长时间得不到其它客户的认同,BT会在一段时间停止他的上传作为对他的警告;对于已经下载完毕的客户,BT会简单的使上传流量最多的客户得到更多的时间完成上传;为了防止在文件的最后阶段下载速度下降,BT会在最后时向所有连接的客户发送请求迅速完成下载;下载过程中,BT会对文件块在整个网络中的存在复本的多少进行跟踪,比较少的复本总是会得到优先的下载权,以使整个网络的文件冗余度提高。简单的说,BT使用的是针对文件的流量控制方式。
Emule采用的是客户积分的方式,就是对所有用户的上传和下载量进行一个运算,从而得出一个客户的积分值,那些积分比较高的用户总是可以得到优先的下载权,甚至可以不进行排队直接下载,结果就是:在一个比较长的时间内对一个用户对其它用户的整体贡献有了一个估量。简单的说,eMule协议采用的是针对用户的流量控制方式。
5.功能与性能:
eMule具有查找功能,而这在BT只能通过网站来实现。