在BitTorrent Mainline DHT使用的不可靠的RPC协议中,错误消息的必要性是什么?

时间:2012-08-24 10:59:41

标签: networking rpc bittorrent dht

Mainline DHT是BitTorrent使用的DHT,它通过UDP实现称为KRPC的RPC协议。 KRPC包括对错误消息outlined here的支持。

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

1 个答案:

答案 0 :(得分:3)

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

如果每个节点都会回复错误消息,那么客户端开发人员可以更轻松地修复其DHT实现中的错误。

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

<强>更新

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

此扩展程序由uTorrent,libtorrent和Bleep支持。