标签: kademlia

如何在Kademlia p2p协议中实现高效广播?

我目前正在研究Kademlia对等协议,并且很好奇是否有人知道有效广播信息/消息的技术或方法吗?

有一篇论文介绍了结构化P2P网络中的有效广播,它描述了Chord中的一种广播方式。他们的想法是将网络分为两个部分,并将广播消息发送到每个分区中的第一个节点。被联系的节点再次划分其“子网”并执行相同的操作。使用此技术,您可以通过网络在生成树上广播消息。但是,由于难以可靠地划分Kademlia网络,因此在将其应用于Kademlia时遇到了问题。

是否有人知道如何实现这一目标或存在其他替代方法?

我不想大量泛洪网络,因为这会对网络负载产生严重影响,并导致大量冗余流量。

networking p2p network-protocols kademlia

5
推荐指数
0
解决办法
842
查看次数

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

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

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

谢谢你,亚历克斯

bittorrent dht kademlia torrent

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

Kademlia 中如何选择数字 k?

我在此处阅读了有关 Kademlia 的论文。

我不明白如何选择数字 k (对于 k 桶)。

我不明白这句话:“k 的选择使得任何给定的 k 个节点都不太可能在一小时内彼此失败。”

我不明白节点怎么会失败?

p2p kademlia

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

为什么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
查看次数

DHT(kademlia)能够可靠地存储价值链吗?

我正在考虑实现一个 DHT,其中通过将后继地址添加到存储的值中来链接数据项,如果每个节点可以具有以下三种有序状态之一:空 -> 数据 -> 数据,并且所有对等点都会获得后继地址一致且正确的顺序?或者这里有可能出现永久分叉吗?

graph dht kademlia

3
推荐指数
1
解决办法
472
查看次数

如何从DHT中提取种子文件?

我编写了一个简单的脚本,该脚本查找给定info_hash的示例对等IP。我在BEP-0005中看不到此类信息:如何实际上从DHT中提取种子文件?

bittorrent dht kademlia

3
推荐指数
1
解决办法
842
查看次数

使用 DHT 进行八卦协议?

我已经研究 DHT,尤其是 kademlia 一段时间了。我正在尝试实现一个在 Kademlia DHT 上运行的 p2p 网络。我希望能够向整个网络传播消息。根据我的研究,使用了八卦协议,但是当我已经使用 dht 来存储对等点时,添加另一个全新的协议来传播消息似乎很奇怪。是否有像 Kademlia 这样的可以在 DHT 拓扑上工作或与 DHT 拓扑一起工作的八卦协议?

networking p2p dht kademlia gossip

3
推荐指数
1
解决办法
1074
查看次数

为什么Kademlia使用UDP?

为什么Kademlia Distributed Hash Table使用UDP作为其网络传输协议,即使它不可靠?

networking udp dht kademlia

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

Kademlia 协议如何保证对等点形成连接图?

节点:DHT 网络上的客户端。
Peers:尝试下载特定资源的客户端。

假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消费与 DHT 网络覆盖的互联网是完全连接的普遍看法相反)。

叠加在 DHT-network 上的 Peer-network 还是连通图吗?为什么?

networking p2p bittorrent dht kademlia

2
推荐指数
1
解决办法
556
查看次数

标签 统计

kademlia ×11

dht ×9

p2p ×6

bittorrent ×5

networking ×4

chord ×1

gossip ×1

graph ×1

network-protocols ×1

routing ×1

torrent ×1

udp ×1