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请求资源

posted @ 2017-05-17 17:34  高压锅里的大萝卜  阅读(4497)  评论(0编辑  收藏  举报