笔者准备写几篇和ed2k ,eMule 源代码梳理以及 kad实现的博客。梳理源代码的目的在于让大家在看了一下原理后,想看下这些原理的具体实现(看eMule源代码)时轻松些,更有目标。所以在这里笔者也上传了eMule官方源码,若梳理的不好请见谅。这里是第一篇介绍的是ed2k的背景及eMule协议的整体架构。
ed2k全称叫“eDonkey2000 network”,是一种文件共享网络,最初用于共享音乐、电影和软件。与多数文件共享网络一样,它是分布式的;文件基于P2P原理存放于用户的电脑上而不是存储于一个中枢服务器。
eDonkey客户端程序连接到这个网络来共享文件。而eDonkey服务器作为一个通讯中心,使用户在ed2k网络内查找文件。它的客户端和服务端可以工作于Windows、Macintosh、Linux、UNIX操作系统。任何人都可以作为服务器加入这个网络。由于服务器经常变化,客户端会经常更新它的服务器列表。
eDonkey用混合MD4摘要算法检查来识别文件。这使ed2k网络可以将不同文件名的同一文件成功识别为一个文件,并使同一文件名的不同文件得以区分。eDonkeyd的另一特性是:对大于9.8MB的文件,它在下载完成前将其分割;这将加速大型文件的发送。为了便于文件搜索,一些Web站点对比较热门的文件建立 ed2k链接,这些网站通常也提供热门服务器列表便于用户更新。
应用最广泛的ed2k服务器软件是Lugdunum,最开始的ed2k客户端是 eDonkey。
eDonkey是由Jed McCaleb在2000年创立。采用“多源文件传输协议”(MFTP,the Multisource File Transfer Protocol)来散布文件。eDonkey中的索引服务器并