标签: dht

用户身份验证和 dht

假设我只实现了 DHT(分布式哈希表)(在 Python 中),并且我想通过 P2P 网络构建身份验证服务,但不引入具有此类服务的集中式身份验证服务器。可以吗?如果可以,我该如何实现这一目标?

我熟悉 Skype 和 Wuala 是如何做到这一点的,但我正在寻找没有单点故障的去中心化解决方案。

authentication p2p dht

5
推荐指数
1
解决办法
942
查看次数

DHT的C++实现

我正在寻找C/C++中Kademlia DHT 的开源实现。它必须是轻量级和跨平台的(win/linux/mac)。

它必须能够将信息发布到 DHT 并检索它。

c++ cross-platform dht

5
推荐指数
2
解决办法
6638
查看次数

启用 DHT 时,是否每个对等点都需要成为 BitTorrent 中的节点?

每次向对等点请求特定文件时,每个对等点是否都成为 DHT 节点?还是节点独立于对等点存在?本质上,你如何成为一个节点?你可以是一个peer而不是一个节点吗?

如果问题太简单(这里是菜鸟),我很抱歉,但我无法在其他任何地方找到答案。我使用的术语与此处使用的相同。

bittorrent dht

5
推荐指数
1
解决办法
632
查看次数

Kademlia 节点树与 torrent 文件的 infohash 有何关联?

我试图了解 Kademlia 如何寻找资源。现在有很好的描述来构建最接近自身节点的节点树,如何找到节点之间的距离,如何启动该过程等。我不明白的是文件 infohash 如何适合这张图片。所有描述都告诉我们如何进入游戏并构建自己的分布式哈希表部分,但事实并非如此。我们这样做是为了实际查找资源,即具有特定信息哈希的文件。它是如何存储在这个节点树中的还是有一个单独的?如何找到具有此 infohash 的节点,从而获得该文件。

简要提到了这样一个事实,即节点 id 和 infohash 具有相同的 20 字节长度代码,并且节点 id XOR infohash 是节点和资源之间的距离,但我无法想象这是如何以及它如何帮助找到资源?毕竟,实际拥有该资源的节点id可以与该资源具有最大的异或距离。

谢谢你,亚历克斯

bittorrent dht kademlia torrent

5
推荐指数
1
解决办法
837
查看次数

主线DHT引导程序

有人能否澄清主线DHT规范中的陈述?

在将第一节点插入其路由表中并且此后启动时,该节点应该尝试在DHT中找到与其自身最近的节点.它通过向更近和更近的节点发出find_node消息来做到这一点,直到找不到更近的节点.

什么"直到它找不到更近"是什么意思?

当我的程序开始发送find_node消息时,它有空的节点集.对find_node消息的每个响应都返回大约8个dht节点.我的程序在列表中收集它们.

我的程序何时必须停止发送查找节点消息?

我认为它必须停止发送它何时会收到dht节点的集合,其中所有元素都在已经收集的节点列表中?

我对吗?

先感谢您.

implementation bootstrapping bittorrent dht

4
推荐指数
1
解决办法
1142
查看次数

是否允许在Mainline DHT中的同一ip:端口对后面运行几个不同的DHT节点?

是否允许在Mainline DHT中的同一ip:端口对后面运行几个不同的DHT节点?哪个节点应该回复DHT查询消息?全部或其中一个?

先感谢您.

bittorrent dht

4
推荐指数
1
解决办法
378
查看次数

PHP DHT info_hash列表?

我想(通过PHP)收集当前正在下载的info_hashes或搜索DHT.

我见过BTDigg,它使用DHT作为搜索引擎,我想做类似的事情.

此外,在我得到哈希后,如何将哈希转换为洪流,以便我可以获得诸如标题等信息?(再一次通过DHT使用PHP).

我尝试先研究 - 查询DHT服务器尝试通过PHP运行DHT查询,我尝试进行修改,但我没有运气.我也尝试了http://projects-deim.urv.cat/trac/p2pweb/browser/trunk/dht/dht_agg?rev=1但它给了我几个错误,经过多次修复之后它仍然没有用.

php bittorrent dht

4
推荐指数
1
解决办法
1539
查看次数

为什么Kademlia如何构建其路由表呢?

据我所知,Kademlia路由表由160个桶组成.

根据节点的前缀长度(本地节点密钥和节点的XOR中的前导未设置位数),将节点放入0-159个桶中.

为什么会这样,是否有任何性能优势(除了通过迭代160*20节点找到最接近的是不可行的事实)?

routing p2p dht kademlia

4
推荐指数
1
解决办法
1859
查看次数

应用程序可以在同一个DHT中共存吗?

如果您创建使用分布式哈希表(DHT)的新应用程序,则需要引导p2p网络.我有一个想法,你可以加入现有的DHT(例如Bittorrent DHT).

这可行吗?当然,我们采用相同的技术.将Chord与Kademlia结合使用显然是不可行的.

如果是的话,这会被认为是寄生的还是共生的?寄生意味着它与某种原始用途发生冲突.共生,如果它们对两种应用都有好处,因为它们相互支持.

p2p bittorrent dht chord kademlia

4
推荐指数
1
解决办法
121
查看次数

BitTorrent DHT 详细规范

在我的新周末项目中,我决定从头开始编写一个 BitTorrent 客户端,根本没有准备好使用库。经过两天寻找文档后,我已经准备放弃了:smile:。我知道有BEP,但它们远远不足以理解所有规范。在阅读了更多内容之后,我认为跟踪器和对等协议似乎很旧并且易于理解/实现(是的,我知道,要编写具有平衡、对等选择、优化的良好代码,这并不容易,正如我刚才所说的,但我只想做基础知识来学习,而不是与那里的数十个优秀客户竞争。)

因此,我决定从 DHT 开始,这似乎是更复杂的部分,而且文档也更少。当您停止寻找 bittorrent DHT 或主线 DHT 并开始寻找 kademlia DHT 时,您会获得更多信息,但如何将它们组合在一起并不那么明显。

以下是我到目前为止的理解(还有一些我希望填补的空白):

  1. 我从我的 DHT 树开始为空
  2. find_nodes在我的引导节点上使用
  3. 将接收到的节点添加到我自己的树中,这样我就可以选择更接近我自己的 ID 的节点
  4. 开始find_nodes向选定的人发出并将他们的回复添加到我的树中
  5. 返回 3 直到我停止接收未知/新节点
  6. 如果我收到一个announce_peer带有 an 的info_hash信息,我应该将其信息保存在本地数据库上(发送者的 info_hash 和 ip/端口)
  7. 如果一个节点get_peersinfo_hash我数据库中的节点一起使用,那么我发送信息,否则我应该发送我自己的树中更接近的节点列表(最接近该 info_hash)
  8. 当我get_peers在其他节点上使用时,我将收到对等点或节点,在后一种情况下,我认为这些节点更接近,info_hash而不是我自己的nodeId,所以,我应该将这些节点添加到我的树中还是基于它们启动一个新树?
  9. 当我想宣布我感兴趣的是info_hash我应该在任何地方使用还是只在更接近目标的announce_peer节点上使用?距离多少才算足够近?nodeIdinfo_hash

此时我有很多ID与我自己的ID更接近的节点,而有关info_hash的信息我并不真正感兴趣。

我担心我有一个巨大的愚蠢问题:我为什么这么做?

我的意思是:我做所有这些工作的自私原因是找到我感兴趣的 info_hash 的对等点。我知道一个 info_hash 的信息可能保存在 ID 更接近该 info_hash 的节点上。因此,如果我创建一棵更接近 info_hash 而不是更接近我自己的 ID 的节点树,我找到其信息的机会就会更大(此时,如果您知道主题,您已经注意到我有多么迷失)。

我应该创建多棵树吗?一棵适合我(保存人们发送给我的更接近我的nodeID的info_hashes信息),另一棵更接近我的目标info_hashes的信息,以便我可以检索他们的信息?

我是否应该创建一棵更接近我的节点 ID 的树,并在查询该树以获得我需要的 …

bittorrent dht kademlia

4
推荐指数
1
解决办法
1039
查看次数