作者serate (Milk)
看板P2PSoftWare
标题Re: [问题]DHT的一些问题
时间Thu Nov 6 09:21:33 2008
※ 引述《bedocument (剑魂痴)》之铭言:
: 简单的说 , 一般bt抓档案的方法是 , 种子里纪录tracker , 开启bt的时候连接上
: tracker , 之後再找到有哪些IP有这个档案然後再从这些peer抓取档案
: 如果是用DHT的方式 , 从维基的解释 , 就是不需要先连到tracker就可以找到peer
: 然後下载档案 , 那这样的话它是靠什麽方法找到这些有档案的peer , 这点让我很疑惑
: 还有就是现在我们学校有档bt , 应该是阻挡种子连接上tracker , 因为同样一个种子
: 在家里用中华电信就抓得很开心 , 学校一动也不动 , 但是如果把家里的bt软体资料夹
: (我用bitcomet)放到学校里面抓 , 就可以抓档案了(不过要勾选DHT) , 我猜应该是软体
: 里面已经有纪录了peer所以才可以抓的
正解
BitComet\rules\dhtnodes.dat 就是记录
: 以上上说了这麽多 , 我只是想知道DHT到底是靠什麽找到拥有档案的peer的?
简单版答案:
就是"问"啊!
一问十,十问百,一层层接力问下去总会问到拥有该档案的那个node
进阶版答案:
举个例子概略说明DHT的原理
首先规定:
* 定义一个式子,每个档案可由这个算式得出一个值,这里称它为key
假设其值的可能范围为1~100
* 每个用户都有一个ID,是由P2P软体以随机方式帮你产生,
其值的可能范围与key一样,为1~100
- 现在假设我的ID值是50,且其他所有用户的ID都互不重覆,
同时所有同户刚好都在线上 -
在我的电脑上维护两份记录表: A表与B表
1. A表用来记录其他用户的IP位址,其ID值差我越多的用户我就记少一点
於是我记录了以下ID值的用户:
5, 15, 25, 35, 45~55, 65, 75, 85, 95
2. 当我遇到某用户他有拥有某个档案,其key值跟我的ID值很接近,我就记录起来
例如我遇到用户a有一个档案,其key值为51
於是我就在B表上记录: 用户a有key值为51的档
只要每个用户都照上述规则来玩,就可达成下列条件:
* 每个用户都只需记录一点点资料,即可以轻易的藉此找到任何一个用户与档案
* 如果我想要抓某档案,只要找出档案的key值,再去问ID值跟这个key很接近
的那几个用户,他们只要查一下B表就可以马上告诉我谁有这个档案
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.169.2.101
※ 编辑: serate 来自: 218.169.2.101 (11/06 09:39)
1F:推 lordmi :没想到一大早就出现演算法,另类脑锻XD 11/06 09:53
2F:推 bedocument :谢谢回答我知道原理了 11/06 12:12