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

呆萌的DHT协议(下)

2018-02-17 01:05 作者:NewtonCY  | 我要投稿


上回书,我们已经知道了如何通过一台计算机的名字来找到一台计算机。接下来,我们需要找到资源。

具体方法如下:

1、为文件计算一个160位的二进制串。而且这种计算方案必须满足如下的要求:

        每个文件计算出来的二进制串是唯一确定的,不同的文件计算出来的二进制串是不同的,文件一丁点的不一样都会在这串二进制上有所体现。

        我们把这个二进制串叫做文件的哈希值 

        为什么要这样呢?你想,如果每一个文件都能映射成一个唯一确定的二进制串的话:

        一者,这个哈希值可以作为这个文件的标识,帮助我们查找和区别每一个文件。二者,我们上次说了,计算机给自己起的名字是一个160位的二进制的随机数。而这个关于文件的二进制串不就很像一个电脑的名字了吗?


[下面这段作为拓充,可看可不看]   

那么具体是怎么做的呢?为了方便大家理解,我来随便说一个简单粗暴的映射方案,以证明这样的映射是很方便。首先,文件是一个很长很长的二进制串,我们把这个文件每160位分一份。然后这个文件就变成了n个160位的二进制数了。然后把第一个160位二进制数与第二个二进制数相加,得到一个160位或161位的数。如果是161位,则舍去最高位。然后我们在把这个和与第三个二进制数相加。就这样一直加下去。并不断舍去超过160位的数字。最后就得到了一个与文件有关的160位二进制数了。类似于这样的方法我们称为哈希(hash)。实际运用中要比这个更复杂一点。事实上,在DHT中实现这步的方法叫做hash sha-1。


2、当你的电脑拥有或者正在下载一个文件的时候,必须把自己的ip地址告诉电脑名字与文件的哈希值最接近的电脑。

        看到这里,机智的你应该明白了,为什么电脑的名字 和 文件的哈希 都要是160位二进制了,为的就是把文件和某一个电脑关联上。


3、当你想要某个文件的时候,电脑就会去找与文件的哈希值名字最相近的电脑,去问它哪些电脑上有这个文件。此电脑如果知道的话,就会返回拥有这个文件的电脑的ip地址。然后,你的电脑就会找这些有文件的电脑要文件啦。

 

来,让我们整理一下:


1、当某人一个文件比如"记.mp4",他的为这个文件计算出一个名字,比如小鹏。

2、这个“某人”的电脑会把自己的ip地址告诉叫小鹏的电脑或者叫类似于小鹏这个名字的电脑。其实它不一定只向名字接近小鹏的电脑发ip地址,它可能会向多台名字接近小鹏的电脑发自己的ip,告诉他们自己有谭雅战记。

3、当你想要谭雅战记的时候,先下载一个种子,种子里会有谭雅战记的哈希,也就是“小鹏”。然后你的电脑就会在DHT网络上找小鹏。最后找到名叫小鹏或类似小鹏电脑,它会告诉你那个“某人”有这个文件,并告诉你“某人”的ip。于是你与那个“某人”建立连接,“某人”的电脑就会把谭雅战记传给你。


就是这样了,求推荐,硬币,收藏!




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

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