首页 > 解决方案 > Bittorrent:get_peers DHT 响应中的令牌大小

问题描述

我已阅读BEP 5规范并期望 DHT 消息中的令牌值始终具有 20 字节长度。因为:

BitTorrent 实施使用 IP 地址的 SHA1 散列连接到每五分钟更改一次的密钥上,并且接受长达十分钟的令牌。

SHA1 是 20 个字节。
但在实践中,我得到了 8 字节长的令牌作为get_peers响应。BEP 5 还包含使用 8 字节长令牌的示例。

那是其他类型的令牌吗?如果是这样,它的长度是否有任何规范或限制?我可以假设它<= 20吗?

UPD:事实上,我也得到了尺寸为 20 和 4 的代币。很少:2、3、7。

标签: bittorrentdht

解决方案


sha1用于生成令牌并不意味着您收到的是sha1 输出,即使用 sha1 并不排除额外的处理步骤。另外前一句说

由于令牌仅由查询节点返回到它从其接收令牌的同一节点,因此未定义实现

因此,原始 bittorrent 客户端使用的实现只是如何以无状态方式完成的示例。

令牌是特定于实现的长度的不透明值,应按原样返回给发送者。


推荐阅读