欢迎光临散文网 会员登陆 & 注册

呆萌的DHT协议(上)

2018-02-11 00:56 作者:NewtonCY  | 我要投稿


1、什么是DHT协议

我们下载东西。通常可以正大光明的直接去某个网站的服务器上下载。但我们知道并不是每个资源都能用这种方法下载。对于不能直接下载的资源,我们习惯于找种子。用种子下载的方法,我们称为p2p下载。
即,让有传。
存在于服务器上的资源很容易被禁,但是存在于亿万网络用户磁盘中的资源却是禁止不了的。

我们需要某个资源的时候,不可能向每一个网络用户发一个请求让他给你资源,因为网民太多,而他刚好下了你的资源的可能性很小。所以我们需要一种方式来精确的定位我们需要的资源在哪个人手上。同时,这必须是一种不依赖于服务器的方式。因为依赖于服务器就可能被禁。

于是,DHT协议。不需要服务器,同时能定位资源。


2、DHT如何能找到一台特定的pc

要找到一台电脑上的资源,必先找到这台电脑。但是这是不容易的。传统的网络协议(tcp/ip)中IP地址是电脑在网络中的唯一标识,也是在网络中找到一台电脑的唯一方法。但是用IP地址来找一个普通人的电脑是不可行的。因为对于一个普通网民,他的IP是动态的。可能今天这个IP地址是他,明天这个IP地址就不是他了。

那么,DHT是如何找一台电脑的呢,实现方法很呆萌。首先我们定义如下规则

(1)每台电脑在加入资源分享的队伍之前,先给自己取个名字。这个名字是随机的,为一个160位的二进制随机数。

(2)每台电脑要努力通过其他电脑,结识更多的、加入资源分享的、使用DHT协议的电脑,特别是那些名字与自己名字相近的电脑。

(参考如下过程:

    一台给自己取名叫小明的电脑取得了一个bt种子。

    种子里面写着它代表的资源,同时里面还写着很多类似于XX市XX区XX街几号几零几的地址(即IP地址啦)

    小明挨个去访问这些地址,他们中的很多已经搬家了(因为IP是动态的)

    终于他敲响了小红家的门
    小明:你使用DHT协议吗?
    小红:是的。
    小明:请求——ping~我叫小明
    小红:答复——ping~我叫小红
    小明:请问你认识名字类似于小明的人吗?
    小红:我认识 小阴,IP:xx,xx,xx,xx:xxxx、小眀,IP:xx,xx,xx,xx:xxxx ...........
    小明挨个拜访这些人,并和他们结成了好朋友,小明和他们约定,搬家了一定要告诉他,这样他们就能永远找得到彼此了。
    小明没事时,就和自己的朋友聊聊看还有哪些名字和他相似而他却不认识的人。然后他再去挨个认识。
    小明结交的人越来越多,以至于为了结交和自己名字更像的人,他不得不抛弃一些和自己名字不像的人(当然,小明不会抛弃的,因为他最喜欢小了)。
    有些人名字虽然和自己很不像,但是小明也会挑几个人保留,因为他想让自己圈子广一点,往后看你会知道为什么。
    这个协议中的每个人都努力寻找和自己名字相似的人,并和他们保持联系
    END)

    机智的读者此时可以停下来思考一下,有一天,小明突然想找和自己名字一点都不像的田莉莉该怎么办呢?
办法如下:
    小明先去问自己列表里和田莉莉名字最像的小口,因为他最有可能认识田莉莉。
    小口说,我不认识田莉莉,但是我知道小田,他在IP:xxxx
    于是小明找到小田,问他同样的问题,小田声称自己列表里和田莉莉名字最像的叫田利,IP:xxxxx。
    小明去访问田利........
    ................
    可以看到“名字”收敛的很快。如此往复下去,小明很快就找到了认识田莉莉的人。

能在茫茫人海中口口相传来找到任何一个人的方法,有没有很厉害。
现在,我们知道了,DHT的基础是一张“人脉网络”呢。

就先讲到这里,觉得不错请收藏点赞,投硬币!

呆萌的DHT协议(上)的评论 (共 条)

分享到微博请遵守国家法律