通俗的来讲就是在kad网络中我们每个emule用户端只负责处理一小部分搜索和查找源的工作。分配这些工作的时候,通过我们每个用户端的唯一的ID和搜索文件的hash值之间的匹配来决定。比如像我猜我猜我猜猜.rm这个文件由用户小王来负责(通过该文件的hash值来决定),那么任何其他用户在下载这个文件的时候都会告诉其他用户,小王有这个文件,其他用户去下载这个文件的时候也会询问小王,小王也会告诉他们谁正在共享这个文件,这样kad找源的工作就完成了。搜索时候的方法也差不多,只不过是每个人负责一个关键字。整个过程有点像在照线索循序问路而找到正确方向,而不是路上随便到处抓人在问路。而每个地方里的网络相关信息,则会随着电脑及文件的加入而持续更新。好处在于让你可以搜索整个网络,而不只是在某一地区。来讲,这个机制和算法是绝对领先而且非常优秀的。相关方法如何找到用户小王则是通过将用户id异或的方式,两个id的二进位异或值决定他们之间的逻辑距离,如1100距离1101要比距离1001近。那么当一个用户加入kad后,首先通过一个已知的用户找到一批用户的id和ip地址和端口。当该用户要寻找一个特定用户A的时候,该用户先询问几个已知的逻辑距离较A较近的用户,如B用户,C用户,D用户,B,C,D会告诉该用户他们知道的更加近的用户的id和ip地址和端口,同理类推,这个用户最终就能找到A。所以寻找的次数会在logN数量级,这里N代表询问的人数。其实也就是一种分散式杂凑的方法,基本上是对网络上某一特定时刻的文件进行快照(snapshot),然后将这些信息分散到整个网络里。 为了找到特定的文件,搜索的要求先到达网络上的任何一台电脑上,然后这台电脑就会再将它转到另一台有更多文件信息的电脑。第三台电脑可能就拥有文件本身——或者也可能再继续转到其他有正确信息的电脑。采用这种方法,通常只需要跳转两到三次,便可以轻松查找到所需文件。以上几个部分,便是对于kad作用原理以及算法的分析,可能好多人看了之后头大,那么我们普通用户到底该注意些什么呢?在2002年5月13日的黎明,一个叫Merkur的人对原始的eDonkey2000客户端感到不满,他坚信他能做的更好。然后他就那么去做了。他在自己的周围聚集了很多的开发人员,eMule工程也由此诞生。他们的目标是将eDonkey的精华保留下来,增加新的功能,并使图形界面更加友好。他们无法想象此时的决定会带来什么样的影响……今天,eMule是世界上最大最可靠的点对点文件共享客户端之一。由于它奉行开发源代码的政策,众多的开发者得以对eMule工程有所贡献。随着每一个版本的发布,eMule的开发者网络都变得更有效率。