dht算法原理描述
dht原理
dht是P2P網絡(結構化P2P)核心路由算法,主要是利用一致性hash,把節點和資源都表示成一個hash值,放入到這個大的hash環中,每個節點負責路由靠近它的資源。
一.重要概念:
1.node
負責P2P路由信息,P2P網絡的組網就是它來負責
2.peer
負責管理資源,生成種子文件,發布資源信息
3.nodeid
節點的唯一標識,是一個160bit的hash值
4.infohash
資源的唯一標識,也是一個160bit的hash值,其和nodeid使用同一個算法
5.距離
距離是兩個hash值進行異或(XOR)操作後的值,值越小,距離越近
節點和資源的距離: nodeid XOR infohash
兩個節點之間的距離:nodeid1 xor nodeid2
6.種子文件
對某個資源的描述文件,種子文件包括了資源的infohash(160bit)、資源所在機器(nodeId IP PORT)、離資源所在機器最近的N個機器(nodeid IP PORT)列表
二.典型場景描述:
1.新節點加入網絡
新安裝的P2P客戶端是一個孤立的節點,和其他節點都無聯系,怎麽加入P2P網絡呢?需要有一個種子文件,種子文件中有多個該P2P網絡中的node信息,
根據種子文件中的節點列表,連接到P2P網絡,並獲取路由信息,獲取最靠近本新節點的節點列表
2.發布資源
a.生成資源的Infohash
b.查找和infohash距離最近的N個Node,向這N個node廣播新資源信息,告訴這些節點,我有某某資源
----- 節點生成了資源,不過其路由信息不在這個節點上(也不在離這個節點的最近的M節點上),而是在和資源infohash最近的N個node上
3.查找某個資源並下載
a.找到最靠近資源的N個node(使用nodeid xor infohash來計算距離遠近)
b.向這些node發送資源查詢信息,如果有這個資源的詳細信息,就返回給客戶端,否則返回離資源更近的node列表給客戶端
c.直到查詢到資源提供者信息,如果沒查到信息,且沒有更近的node了,那就說明這個資源沒有提供者
d.找到node信息(nodeid,ip,port)後,向這個node請求資源
dht算法原理描述