簡介
Kad是Kademlia的簡稱,Kademlia是P2P重疊網絡傳輸協議,以構建分布式的P2P電腦網絡。是一種基于異或運算的P2P信息系統。它制定了網絡的結構及規範了節點間通訊和交換資訊的方式。
Kademlia節點間使用傳輸通訊協議UDP溝通。Kademlia節點利用分布式散列表(DHT)儲存資料索引。透過現有的局域網/廣域網(LAN/WAN),建立起一個新的虛拟網絡或重疊網絡。
工作原理
Kad網絡利用UDP,包括了以下五點:
1、查找ed2k散列來源
2、使用文件名稱的關鍵字,來搜索ed2k散列。
3、查找文件的注解與評分。
4、為防火牆内的節點(低ID)提供夥伴服務(buddyservice)
5、貯存位置、注解與(來自關鍵字的)文件名
注意Kad并不會實際用來在點對點網絡中傳送文件,而是在文件開始傳送時,用戶之間彼此直接連接(通過标準IP網絡)。
在Kad網絡中,每個節點隻負責處理一小部分搜索和查找源的工作。分配這些工作的時候,通過我們每個用戶端的唯一的ID和搜索文件的Hash值之間的匹配來決定。
用戶可以進行簡單的理解:在Kad網絡的世界裡,用戶可以直接問其他用戶“你有沒有我要的文件”,如果有,就會進行文件傳輸,如果沒有,就會告之哪個用戶有或者可能有,直到文件傳輸完畢。
與ED2K網絡的不同在于,KAD網絡讓用戶省去了從服務器尋找用戶源的步驟,可以直接找尋到合适的用戶源,進行文件傳輸。
KAD端口則是用來進行KAD節點間溝通的端口。
目前實際上隻有3個客戶端程序支持Kad網絡。在國内最主要的體現是eMule下載,其餘的軟件為aMule以及MLDonkey。
其他說明
Kad(Kademlia)是一種分散式(decentralized)的P2P通信協議,是将所有的用戶連成一個網絡,不通過服務器,從而直接進行搜索資源和來源的操作。可以減低服務器的負擔。
eMule目前支持兩種P2P網絡:KAD網絡和eDonkey網絡(全稱:eDonkey2000Network,中文叫電驢網絡,簡稱:ed2k)。
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。



















