问题标签 [dht]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
p2p - 在哪里可以使用分布式哈希表来代替 BitTorrent?
与BitTorrent(Tribler是最重要的研究项目)相比,最近缺乏对DHT领域的研究,这让我想知道 DHT 的使用。
BitTorrent 和分布式哈希表都提供了一种使用数据存储等键值在对等点之间分发内容的方法。DHT 比使用 BitTorrent 更适用的用例有哪些?
java - 在 DHT 中模拟节点故障
我目前正在使用免费的糕点 DHT 进行一些性能测试。Freepastry 是一个用 Java 完成的开源 DHT。
目标是监控一定数量的节点宕机时对 DHT 的影响。我的问题是我不确定消除节点的最佳方法。目前每个节点都在我机器上的不同端口上运行。我正在使用 Pastry API http://www.freepastry.org/FreePastry/javadoc21a3/rice/pastry/PastryNode.html#destroy ()中的 destroy() 方法销毁这些节点
我担心这在模拟节点故障时可能是不现实的,我是否应该以不同的方式杀死节点,例如使用 tcpkill?
我正在运行 Mac OS X 雪豹,有兴趣听听任何建议吗?
p2p - 如何更新 DHT 中的条目
我知道(理论上)数据是如何存储在 DHT 中的。但是,我不确定如何更新与密钥关联的数据。这可能吗?此外,如何在 DHT 中处理冲突。
networking - BitTorrent Mainline DHT 使用的不可靠的 RPC 协议中错误消息的必要性是什么?
Mainline DHT是 BitTorrent 使用的 DHT,它在 UDP 上实现了一个称为 KRPC 的 RPC 协议。KRPC 包括对此处列出的错误消息的支持。
为什么这是必要的?由于这是一个不可靠的协议,因此无法保证会收到这些消息,也无法保证它们没有明显的用途。
p2p - 在 Pastry P2P 网络中的节点创建路由表
这个问题是关于在基于 Pastry 的 p2p 网络中的节点处创建路由表的。
我正在尝试在单个 JVM 中模拟这种路由表创建方案。我似乎无法理解这些路由表是如何从第一个节点的加入点创建的。我有 N 个独立节点,每个节点都有一个 160 位的 nodeId,生成为 SHA-1 散列和一个确定这些节点之间接近度的函数。假设第一个节点启动环并加入它。协议说这个节点此时应该已经建立了它的路由表。但是此时我在环中没有任何其他节点,那么它是如何开始创建它的路由表的呢?
当第二个节点希望加入环时,它会向第一个节点发送一个加入消息(包含它的 nodeID),然后它会以跳跃的形式将其传递给该第二个节点最近的可用邻居,该邻居已经存在于环中。这些跃点有助于为这个新的第二个节点创建路由表条目。同样,在没有足够数量的节点的情况下,如何创建所有这些条目?
我刚刚开始查看 FreePastry 实现以获得这些答案,但目前似乎并不十分明显。如果有人可以在这里提供一些指示,那也会有很大的帮助。
bittorrent - 使用 netcat ping router.utorrent.com DHT 节点
我只是想得到一个响应,router.utorrent.com
以便可能使 DHT 服务走上正轨。例如,给定一个磁铁链接:
哈希是:
然后在终端中我输入了这个:
基于此文档,但我没有得到任何回应。我什至尝试使用 Wireshark 检查是否有任何数据包返回,但仍然没有。为什么 μTorrent 不跟我说话?
ruby - 使用 ruby 连接到 torrent "swarm" 或 DHT
我可能对 BitTorrent、DHT 和“swarm”的工作原理缺乏一些基本的了解,因为我什至不确定 DHT 和“swarm”是否是一回事。
但是,我正在尝试从其磁力链接(和哈希)中查找对等点、对等点的数量以及一些有关种子的统计信息。
我已经寻找了一些库来实现这一点,但它们似乎已经过时或不相关,或者只是对事物进行了编码。
如何连接和请求信息?一个简短的解释将是令人愉快的。
networking - Kademlia routing table and distance metric
Its been the first time I read about Kademlia today, and some points I don't think I got them right.
The distance between nodes and keys is the xor of their values.
So, if I have key x and node y, the distance between them is x xor y.
But why what is the point to bucket the nodes I know about and order them by the prefix length ? That doesn't seem to be connected directly with the xor of node IDs to find closests nodes to me ?
When I get a request for a value I search in the nodes in the closests buckets to me, that is the nodes which have the largest shared prefix with me, ie the first few buckets of the 160 buckets ?
or instead I check all nodes I know about in all the buckets and I calculate the xor between the key I am looking for, and those nodes IDs, and then send my request to the top k matches based on the xoring results with the key ID ?
Sorry I am a bit new to DHTs, and found the explanations online a bit not clear.
search-engine - “DHT 搜索引擎”是如何工作的?
我对名为 a的Btdigg.org"DHT search engine"
感兴趣。根据这篇文章,它不存储任何内容,甚至没有数据库。那么它是如何工作的呢?它不需要像其他普通搜索引擎一样收集元信息并将它们存储在数据库中吗?用户提交查询后,它会扫描 DHT 网络并“实时”返回结果?这可能吗?
bittorrent - 如何从 torrent-magnet 链接获得第一个对等点?
我一直在尝试了解 torrent-magnet 技术,但我似乎无法弄清楚在打开磁力链接时如何连接到第一个对等方。
当您获得如下所示的磁力链接时,它不包含初始对等点 - 只有 BitTorrent 信息哈希 (btih) 和文件名。
根据BitTorrent & Magnets:它们是如何工作的?(MakeUseOf)
如果您单击未指定跟踪器 (
tr
)的磁力链接,将使用 DHT 找到第一个对等点。一旦你有了对等点,对等点交换也开始了。
Wikipedia 上的DHT 文章没有指定如何找到对等点,但在Kademlia 文章(BitTorrent DHT 所基于)中,它说
想要加入网络的节点必须首先通过引导过程。在这个阶段,加入节点需要知道已经参与 Kademlia 网络的另一个节点的 IP 地址和端口——一个引导节点(从用户获得,或从存储的列表中获得)。
但是它从哪里知道那个节点呢?我没有在磁力链接中看到地址或任何内容。由于它是分散的(无跟踪器),我不希望它提前知道节点。或者 DHT 实际上不是去中心化的?