DHT(Distributed Hash Table,分布式哈希表)類似Tracker的根據種子特征碼返回種子信息的網絡。
DHT全稱叫分布式哈希表(Distributed Hash Table),是一種分布式存儲方法。
在不需要服務器的情況下,每個客戶端負責一個小范圍的路由,並負責存儲一小部分數據,從而實現整個DHT網絡的尋址和存儲。
新版BitComet允許同行連接DHT網絡和Tracker,也就是說在完全不連上Tracker服務器的情況下,也可以很好的下載,
因為它可以在DHT網絡中尋找下載同一文件的其他用戶。
分散式散列表(英語:distributed hash table,縮寫DHT)是分散式計算系統中的一類,
用來將一個關鍵值(key)的集合分散到所有在分散式系統中的節點,並且可以有效地將消息轉送到唯一
一個擁有查詢者提供的關鍵值的節點(Peers)。
這里的節點類似散列表中的存儲位置。
分散式散列表通常是為了擁有極大節點數量的系統,而且在系統的節點常常會加入或離開(例如網絡斷線)而設計的。
在一個結構性的延展網絡(overlay network)中,參加的節點需要與系統中一小部分的節點溝通,這也需要使用分散式散列表。
分散式散列表可以用以創建更復雜的服務,例如分散式文件系統、點對點技術文件分享系統、合作的網頁緩存、多播、任播、域名系統以及實時通信等。
分散式散列表本質上強調以下特性:
- 離散性:構成系統的節點並沒有任何中央式的協調機制。
- 伸縮性:即使有成千上萬個節點,系統仍然應該十分有效率。
- 容錯性:即使節點不斷地加入、離開或是停止工作,系統仍然必須達到一定的可靠度。
BitTorrent可以選用DHT作為分散式Tracker。
DHT網絡爬蟲基於DHT網絡構建了一個P2P資源搜索引擎。
這個搜索引擎不但可以用於構建DHT網絡中活躍的資源索引(活躍的資源意味着該網絡中肯定有人至少持有該資源的部分數據),
還可以分析出該網絡中的熱門分享資源。
P2P及DHT網絡簡單介紹:
P2P在思想上可以說是internet思想/精神/哲學非常集中的體現,共同的參與,透明的開放,平等的分享(讓我想起之前學習過的,現在正在瘋狂熱炒的雲計算的“中央集權”制度)。基於P2P技術的應用有很多,包括文件分享,即時通信,協同處理,流媒體通信等等。通過這些應用的接觸,分析和理解,P2P其本質是一種新的網絡傳播技術,這種新的傳播技術打破了傳統的C/S架構,逐步地去中心化,扁平化,這或許在一定程度上應證了”世界是平的”趨勢,呵呵。P2P文件分享的應用(BTs/eMules等)是P2P技術最集中的體現,我們這里的研究也是以P2P文件分享網絡作為入口,P2P文件分享網絡的發展大致有以下幾個階段,包含tracker服務器的網絡,無任何服務器的純DHT網絡, 混合型P2P網絡。DHT網絡發展即有“思想/文化”上的“發展”,也有一定的商業上的需求(版權管理)。
DHT全稱叫分布式哈希表(Distributed Hash Table),是一種分布式存儲方法,一類可由鍵值來唯一標示的信息按照某種約定/協議被分散地存儲在多個節點上,這樣也可以有效地避免“中央集權式”的服務器(比如:tracker)的單一故障而帶來的整個網絡癱瘓。實現DHT的技術/算法有很多種,常用的有:Chord, Pastry, Kademlia等。我們這里要研究的是Kademlia算法,因為BT及BT的衍生派(Mainline, Btspilits, Btcomet, uTorrent…),eMule及eMule各類Mods(verycd, easy emules, xtreme…)等P2P文件分享軟件都是基於該算法來實現DHT網絡的,BT采用Python的Kademlia實現叫作khashmir(科什米爾,印巴沖突地帶?),有如下官網。eMule采用C++的Kademlia實現干脆就叫作Kad,當然它們之間有些差別,但基礎都是Kademlia。我們這里以BT-DHT為例進行分析介紹,下面說到的DHT都可以默認是BT-Kademlia-DHT。
Kademlia實現原理
各種DHT的實現算法,不論是Chord, Pastry還是Kademlia,其最直接的目標就是以最快的速度來定位到期望的節點,在P2P文件分享應用中則是以最快的速度來查找到正在分享某一文件/種子的peers列表信息。因為每個節點都是分布式存在於地球的任何角落,如果用地理距離來衡量兩節點間的距離則可能給計算帶來極大復雜性甚至不可能進行衡量,因此基本所有的DHT算法都是采用某種邏輯上的距離,在Kademlia則采用簡單的異或計算來衡量兩節點間的距離,它和地理上的距離沒有任何關系,但卻具備幾何公式的絕大特征:
(1)節點和它本身之間的異或距離是0
(2)異或距離是對稱的:即從A到B的異或距離與從B到A的異或距離是等同的
(3)異或距離符合三角形不等式:給定三個頂點A B C,假如AC之間的異或距離最大,那么AC之間的異或距離必小於或等於AB異或距離和BC異或距離之和.
(4)對於給定的一個距離,距離A只存在有唯一的一個節點B,也即單向性,在查找路徑上也是單向的,這個和地理距離不同。