Kad是
Kademlia的简称,Kademlia 是P2P 重叠
网络传输协议,以构建分布式的P2P电脑网络。是一种基于异或运算的P2P信息系统。它制定了网络的结构及规范了节点间通讯和交换资讯的方式。
Kademlia
节点间使用传输通讯协议 UDP 沟通。Kademlia 节点利用
分布式散列表 (
DHT) 储存资料索引。透过现有的局域网/
广域网( LAN/WAN),建立起一个新的
虚拟网络或重叠网络。
注意
Kad并不会实际用来在
点对点网络中传送文件,而是在文件开始传送时,用户之间彼此直接连接(通过标准
IP网络)。
在Kad网络中,每个节点只负责处理一小部分搜索和查找源的工作。分配这些工作的时候,通过我们每个用户端的唯一的ID和搜索文件的
Hash值之间的匹配来决定。
用户可以进行简单的理解:在Kad网络的世界里,用户可以直接问其他用户“你有没有我要的文件”,如果有,就会进行文件传输,如果没有,就会告之哪个用户有或者可能有,直到文件传输完毕。
与
ED2K网络的不同在于,KAD网络让用户省去了从服务器寻找用户源的步骤,可以直接找寻到合适的用户源,进行文件传输。
目前实际上只有3个客户端程序支持Kad 网络。在国内最主要的体现是
eMule下载,其余的软件为
aMule 以及
MLDonkey 。
Kad(
Kademlia)是一种分散式(decentralized)的P2P通信协议,是将所有的用户连成一个网络,不通过服务器,从而直接进行搜索资源和来源的操作。可以减低服务器的负担。
kad 网络是一种根本不需要服务器的架构,每个
emule客户端负责处理一小部分search和source finding的工作。分配工作的原理是基于客户端的唯一id和search或者source的hash之间的匹配来决定。比如说XXX.avi这个文件 由用户a来负责,则任何用户共享这个文件的时候都会告诉用户a我有这个文件,其他用户去下载这个文件的时候也会询问a,a告诉他们谁有这个文件, source finding就完成了。至于如何找到用户a则是通过一种将用户id
异或的方式,两个id的
二进制异或值决定他们之间的逻辑距离,比如1100距离 1101要比距离1001近。当一个用户加入kad网络后,首先通过一个已知的用户找到一批用户的id和port。当此用户a要寻找某特定用户x时,a先询问几个已知的逻辑距离x较近的用户,如x1,x2,x3会告诉a他们知道的更加近的用户的id和port,依次类推,a最终就能找到x。