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