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請求資源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM