- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
eMule中的分布式哈希表技术: Kademlia
袁杏
115037910086
P2P软件发展
(1) 以分布式哈希表方式(DHT,Distributed Hash Table)来代替集中索引服务器可以说是目前可以预见到的为数不多的P2P软件发展趋势之一,比较典型的方案主要包括:CAN、CHORD、Tapestry、Pastry、Kademlia和Viceroy等
(2)Kademlia协议则是其中应用最为广泛、原理和实现最为实用、简洁的一种,当前主流的P2P软件无一例外地采用了它作为自己的辅助检索协议,如eMule、Bitcomet、Bitspirit和Azureus等。
Kademlia简述
Kademlia协议(以下简称Kad)是美国纽约大学的PetarP. Maymounkov和David Mazieres.在2002年发布的一项研究结果《Kademlia: A peerto -peer information system based onthe XOR metric》。
简单的说,Kad 是一种分布式哈希表(DHT)技术,不过和其他DHT 实现技术比较,如Chord、CAN、Pastry 等,Kad 通过独特的以异或算法(XOR)为距离度量基础,建立了一种全新的DHT拓扑结构,相比于其他算法,大大提高了路由查询速度。
??(3)在2005 年5 月著名的BiTtorrent 在4.1.0 版实现基于Kademlia 协议的DHT 技术后,很快国内的BitComet 和BitSpirit 也实现了和BitTorrent 兼容的DHT 技术,实现trackerless下载方式。
以分布式的应用层全网方式来进行信息的存储和检索
key, value 哈希表条目
文件信息检索协议
典型的结构化P2P覆盖网络(Structured P2P Overlay Network)
Kad
点击添加标题
以eMule为例:Kad网络均存储并维护着两张分布式哈希表
关键词字典
文件索引字典
eMule的Kad网络中究竟存储了哪些信息?
只要是能够表述成为key, value字典条目形式的信息Kad网络均能存储,一个Kad网络能够同时存储多张分布式哈希表。
关键词字典
关键词字典
主要用于根据给出的关键词查询其所对应的文件名称及相关文件信息
Key:所给出的关键词字符串的160比特SHA1散列
value:一个列表,在这个列表当中,给出了所有的文件名称当中拥有对应关键词的文件信息
3元组条目:(文件名,文件长度,文件的SHA1校验值)
例子
1)举个例子:假定存在着一个文件“warcraft_frozen_throne.iso”
2)以“warcraft”、“frozen”、“throne”这三个关键词来查询Kad
3)Kad将有可能分别返回三个不同的文件列表(这三个列表的共同之处则在于它们均包含着一个文件名为“warcraft_frozen_throne.iso”的信息条目)
4)通过该条目,我们可以获得对应iso文件的名称、长度及其160比特的SHA1校验值。
文件索引字典
文件索引字典
用于根据给出的文件信息来查询文件的拥有者
Key:所需下载文件的SHA1校验值
value:一个列表,给出了当前所有拥有该文件的节点的网络信息
3元组条目:(拥有者IP,下载侦听端口,拥有者节点ID)
利用Kad网络搜索并下载文件的基本流程
以“warcraft_frozen_throne.iso”为例
通过warcraft、frozen、throne等任一关键词查询关键词字典
得到该iso的SHA1校验值
通过该校验值查询Kad文件索引字典
获得所有提供“warcraft_frozen_throne.iso”下载的网络节点
以分段下载方式去这些节点下载整个iso文件。
分布式信息检索”所带来的好处了吧。但是,这些条目究竟是怎样存储的呢?我们又该如何通过Kad网络来找到它们
节点的ID和节点之间的距离
Kad网络中的每一个节点均拥有一个专属ID,该ID的具体形式与SHA1散列值类似,为一个长达160bit的整数
事实上,Kad网络将任意两个节点之间的距离d定义为其二者ID值的逐比特二进制和数:假定两个节点的ID分别为a与b,则有:d=a XOR b。在Kad中,每一个节点都可以根据这一距离概念来判断其他节点距离自己的“远近”,当d值大时,节点间距离较远,而当d值小时,则两个节点相距很近。
在Kad中,距离这一度量是无方向性的,也就是说a到b的距离恒等于b到a的距离,因为a XOR b==b XOR a
key, value条目是如何存储在Kad网络中的?
*关键词字典的key,文件索引字典的key,都是160bi
文档评论(0)