2

Mainline DHT是 BitTorrent 使用的 DHT,它在 UDP 上实现了一个称为 KRPC 的 RPC 协议。KRPC 包括对此处列出的错误消息的支持。

为什么这是必要的?由于这是一个不可靠的协议,因此无法保证会收到这些消息,也无法保证它们没有明显的用途。

4

1 回答 1

3

如果您向节点发送格式错误的消息,该节点返回错误消息可能会有所帮助,以便您可以修复代码,而不是假装未收到消息。

如果每个节点都会响应错误消息,客户端开发人员将更容易修复其 DHT 实现中的错误。

据我所知,只有 libtorrent (rasterbar) 和原始的 BitTorrent Mainline (python 版本) 在 DHT 中发送错误代码。其他客户端可能会这样做,但主要是 uTorrent 不会。

更新:

错误代码在put/get 扩展中被扩展以用于原子写入。当更新 DHT 中的插槽时,错误消息可能会通知编写器该插槽在读取-更新-写入之间进行了更新,并且应该重试。这在规范中称为 CAS(以 CPU 操作比较和交换命名)。

uTorrent、libtorrent 和 Bleep 支持此扩展。

于 2012-08-24T19:03:01.813 回答