bittorrent - 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。
解决方案
sha1用于生成令牌并不意味着您收到的是sha1 输出,即使用 sha1 并不排除额外的处理步骤。另外前一句说
由于令牌仅由查询节点返回到它从其接收令牌的同一节点,因此未定义实现
因此,原始 bittorrent 客户端使用的实现只是如何以无状态方式完成的示例。
令牌是特定于实现的长度的不透明值,应按原样返回给发送者。
推荐阅读
- google-apps-script - 是否可以在不使用 Apps 脚本更改文档内容的情况下突出显示某些文本?
- android - Android Q:从 System Gallery Picker 获取图像并在下一个 Activity 上应用效果
- pytorch - 为什么一些 vanilla RNN 初始化为带有 sequence_length=1 的隐藏状态以用于 mnist 图像分类
- python - SelectKBest(mutual_info_regression) 进行分类
- mysql - 安装了 mySQL 8,但想回到 mySQL 5.7 版
- python - 如何安排 shell 命令在 GCP 上的 VM 实例中运行?
- html - 从 Figma 到 HTML 和 CSS
- amazon-web-services - 尽管有权限,但通过 Lambda 函数访问 S3 存储桶时出错
- github - 在 GitHub GraphQL 中,contributionCollection->totalPullRequestContributions 和 user->pullRequests->totalCount 有什么区别?
- reactjs - 为什么 getUserPlaylists() 函数不起作用?