比特精靈(/)從v3開始支持最新的BT技術:基於Kademlia技術的公有DHT網絡。通過DHT網絡,BT用戶可以在不依賴傳統的種子服務器的情況下進行正常的下載上傳(Trackerless)。那麽到底什麽是Kademlia技術,什麽又是公有DHT網絡呢?
簡單的說Kademlia只是壹項技術準則(通常稱其為第3代P2P技術),DHT則是該技術的具體實現。(如eMule中也有基於Kademlia技術的KAD實現)。Kademlia is a P2P overlay protocol designed by Petar Maymounkov and David Mazières, for decentralized peer to peer computer networks. It specifies the structure of the network, regulates communication between nodes and how the exchange of information has to take place. Kademlia nodes communicate among themselves using the transport protocol UDP (see OSI model). Kademlia nodes store data by implementing a Distributed Hash Table (DHT). Over an existing LAN/WAN (like the Internet) a new, virtual network, is created in which each network node is identified by a number ("Node ID"). This number serves not only as its identification, but the Kademlia algorithm uses it for further purposes. 具體的技術細節這裏不過多描述,有興趣的用戶可以自行參考相關的資料。那麽,為什麽要在BT裏引入基於Kademlia的公有DHT網絡?在傳統的BT下載裏,所有的種子文件都必須指定壹個或多個種子服務器,即通常所說的Tracker或Announce地址。而壹旦該種子服務器當機或由於其它原因停擺(比如:前不久我們的前服務商違約,強行拔掉我們的服務器的網線),BT用戶很可能就無法完成該種子文件的上傳與下載。在傳統BT下載裏,還有如下情況:有兩個完全相同的種子文件,但是由於指定了不同的Tracker,所以不同Tracker的用戶之間無法進行下載與上傳,從而不能充分體現BT的下載/上傳效率。而引入公有DHT網絡後,即使種子服務器當機(或者說根本不需要種子服務器的參與),BT用戶仍然可以通過DHT網絡來獲取連接,從而實現下載與上傳。那麽這些連接信息是保存在哪裏的呢?簡單來說,這些連接信息保存在根據壹定的算法挑選出的DHT網絡參與者(即DHT節點)之間,也就是說,壹旦妳加入公有DHT網絡,妳就會有壹個ID(該ID只是程序生成的、虛擬的、完全隨機的ID,與妳的實際個人信息沒有任何聯系,請完全放心),根據壹定的規則,妳需要負責維護壹部分種子文件的連接信息,相當於妳同時也是壹個輕量級種子服務器。由於涉及到壹些數據通信流量,可能會對妳的網絡產生輕微的負擔或影響,不過,與加入公有DHT網絡帶來的回報比起來,該影響是完全可以忽略的,只有在壹種情況下才可能會對妳的網絡產生比較大的負擔:妳負責維護的種子文件正好是壹個非常非常熱門的種子,比如有幾千甚至上萬的BT用戶在下載(如果遇到這種情況,我強烈建議您去買彩票)。當然,從心理回報的角度來看,妳正在為幾千甚至上萬的BT用戶提供橋梁作用,這是壹件值得驕傲與自豪的事。所以,我強烈建議妳打開比特精靈中的公有DHT網絡功能(默認打開),當然,如果妳的網絡條件比較脆弱或妳的服務商對妳做出了很多限制(容易斷流),妳也可以關閉比特精靈的公有DHT網絡功能(個人設置-其它選項-允許比特精靈...)以防止速度下降。前面說到了連接信息是在各個節點之間負責維護的,那麽是不是每個BT用戶所連接到的節點越多越好呢?其實不是的,因為連到越多的節點帶來的網絡流量和網絡負擔都會增加,通常情況下,擁有50個可靠節點或150個可靠節點與擁有上千個節點沒有區別,都能快速、準確的定位所需要查找的節點與連接信息。所以,通常情況下,當程序查找到壹定的節點後(如100個節點)就不會積極查找新的節點。
那麽比特精靈的DHT網絡功能與其它BT客戶端的DHT網絡功能有什麽區別呢?
BT中的基於Kademlia的DHT網絡功能是由BitTorrent(Python版) 4.1.0 開始引入的,比特精靈的DHT實現完全兼容BitTorrent的DHT實現,並且,由於比特精靈是用C++寫就的並經過了相當的算法優化,在程序性能、運行效率、節點定位效率上要好很多。另外,比特精靈還通過DHT網絡全面提升了比特精靈的既有功能,比如種子市場,此外,比特精靈甚至於不要求BT發布站點必須提供種子文件的下載(能大大降低發布站的流量壓力),而可以只提供壹個類似於http://Kademlia/..(40B的哈希Hex串)....的鏈接即可(提示:在比特精靈裏選中壹個任務後通過右鍵菜單的“拷貝DHT鏈接”可以提取種子的鏈接)。
簡而言之,DHT網絡的引入使得BT不再必需種子服務器,可以說是天下從此無服,但從更深層次的角度來說,應該是天下從此無人不服。