Kademlia协议原理简介MMX,k7mmx@tom
com2006
20欢迎参观我的宝宝乐园http://spaces
com/members/cqmmx/一、前言Kademlia协议(以下简称Kad)是美国纽约大学的PetarP
Maymounkov和DavidMazieres
在2002年发布的一项研究结果《Kademlia:Apeerto-peerinformationsystembasedontheXORmetric》
简单的说,Kad是一种分布式哈希表(DHT)技术,不过和其他DHT实现技术比较,如Chord、CAN、Pastry等,Kad通过独特的以异或算法(XOR)为距离度量基础,建立了一种全新的DHT拓扑结构,相比于其他算法,大大提高了路由查询速度
在2005年5月著名的BiTtorrent在4
0版实现基于Kademlia协议的DHT技术后,很快国内的BitComet和BitSpirit也实现了和BitTorrent兼容的DHT技术,实现trackerless下载方式
另外,emule中也很早就实现了基于Kademlia类似的技术(BT中叫DHT,emule中也叫Kad,注意和本文简称的Kad区别),和BT软件使用的Kad技术的区别在于key、value和nodeID的计算方法不同
二、节点状态在Kad网络中,所有节点都被当作一颗二叉树的叶子,并且每一个节点的位置都由其ID值的最短前缀唯一的确定
对于任意一个节点,都可以把这颗二叉树分解为一系列连续的,不包含自己的子树
最高层的子树,由整颗树不包含自己的树的另一半组成;下一层子树由剩下部分不包含自己的一半组成;依此类推,直到分割完整颗树
图1就展示了节点0011如何进行子树的划分:图1:节点0011的子树划分虚线包含的部分就是各子树,由上到下各层的前缀分别为0,01,000,0010