最新的 BitTorrent DHT 实施建议是什么?

2023-12-10

我正在努力实现另一个 BitTorrent 客户端,目前正在与 DHT 作斗争。是按照这个规范来实现的http://www.bittorrent.org/beps/bep_0005.html但开始调试它时,我注意到网络上其他节点的响应有所不同。

例如,find_node 应该返回目标节点信息或 8 个最近的节点。大多数节点都会回复 34 个最近的节点,并且通常这 34 个节点中只有 1 - 3 个节点成功回复随后的 ping 请求。

还有其他文件有更好的实施建议吗?也许已经证明使用 15 分钟间隔将节点状态更改为有问题的效率不高,我必须使用 10 分钟或其他数字?我在哪里可以找到最新的最佳建议?

还有一件奇怪的事。像 router.bittorrent.com 这样的引导节点会回复更接近的节点,通常“节点”BDictionary 属性缓冲区长度不能被 6 整除(紧凑节点信息:IP 为 4,端口为 2)。现在,我只是以最接近 6 倍数的长度切断缓冲区,但这一切都很奇怪。有谁知道为什么会发生这种情况?


规范说(强调我的):

当节点收到 find_node 查询时,它应该使用键“nodes”和包含以下内容的字符串值进行响应紧凑节点信息为了 [...]

再向下:

节点的联系信息被编码为26字节字符串。也称为“紧凑节点信息”网络字节顺序中的 20 字节节点 ID 具有连接到末尾的紧凑 IP 地址/端口信息。


此外,您应该阅读原始的 Kademlia 论文,因为 Bittorrent BEP 建立在其中描述的概念之上,并省略了对这些概念的更深入的解释。

您可能还想阅读一些扩展,这些扩展或多或少是大多数实现的事实上的标准http://libtorrent.org/dht_extensions.html

并阅读其他与 DHT 相关的内容BEPs,其中一些被相当广泛地采用并修改/澄清了 BEP-5 指定的行为,但通常以向后兼容的方式。


例如,find_node 应该返回目标节点信息或 8 个最近的节点

节点将返回可变数量的条目。可能超过 8 个。或更少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最新的 BitTorrent DHT 实施建议是什么? 的相关文章

  • [Tracker] linux 搭建 BitTorrent

    虚拟机 vmware 15 虚拟机系统 ubuntu 20 04 本机系统 win10 注 所有操作都在 root 下进行 Ubuntu 搭建 BitTorrent 本文是在虚拟机中搭建 bitrtorrent 和 web 平台 生成BT种
  • BitTorrent协议规范(BitTorrent Protocol Specification)系列之B编码(Bencoding)-第一部分

    鉴定 BitTorrent是由布莱姆 科恩设计的一个端对端 peer to peer 文件共享协议 此协议使多个peers通过不可信任的网络的文件传输变得更容易 目的 此规范的目的是详细介绍 BitTorrent 协议规范 v1 0 Bra
  • 如何用 Java 生成 .torrent?

    我想用 Java 生成一个 torrent 文件 但我不想要一个大型 API 来执行诸如抓取跟踪器 播种等操作 这仅适用于生成元数据的客户端 存在哪些轻量级解决方案 我只生成单个 zip 文件的 torrent Thanks 我已经将这段独
  • 如何将从 sha1 字节数组生成的字符串返回到该字节数组?

    首先很抱歉英语不好 好吧 我想从 torrent 文件中读取片段哈希信息 目前 我正在使用https github com hyPiRion java bencode这个 Bencode 库来解码信息 但我的问题是当我想将片段字符串转换为字
  • 在 Python 中使用 Rasterbar libtorrent 挑选同级

    有谁知道是否可以选择使用 libtorrent 进行连接的对等点 也就是说 在跟踪器返回对等 IP 和端口的列表后 只有选定的几个将根据某些定义的标准进行连接 Thanks 您可以使用以下命令从集合中删除对等点set ip filter 您
  • Torrent 客户端中的哈希计算

    我想知道是否有人知道 BitTorrent 客户端中的 哈希 指的是什么 它显然不是hash文件的代码 但有些不同 我认为这更像是一个文件的磁力链 接 但是它是如何连接到文件本身的呢 我只是想了解幕后的构造 torrent 客户端中的文件
  • 最新的 BitTorrent DHT 实施建议是什么?

    我正在努力实现另一个 BitTorrent 客户端 目前正在与 DHT 作斗争 是按照这个规范来实现的http www bittorrent org beps bep 0005 html但开始调试它时 我注意到网络上其他节点的响应有所不同
  • 如何使用java从磁力链接创建torrent文件?

    所以我想开发一个新的Java项目 将magnet URI转换为 torrent文件 但是我找不到方法来做到这一点 基本上我把magnet URI分成了几部分 使用的URI magnet xt urn btih d2474e86c95b19b
  • 如何从 torrent 跟踪器响应中获取对等列表

    我正在制作一个种子客户端 我解码 torrent 文件并将此请求发送到跟踪器 http tracker mininova org announce uploaded 0 downloaded 0 compact 0 event starte
  • Ruby Torrent 库

    Ruby 有什么好的库可以与 BitTorrent 跟踪器一起使用吗 下载或种子文件 rubyforge 上有一个 ruby torrent 库 但它最后一次更新是在 2005 年 似乎不再工作了 参见 lib torrent ruby h
  • 在 Kademlia 中,为什么建议使用 160 位节点 ID 和密钥而不是 128 位?

    Kademlia 论文指出 节点被分配了随机的 160 位 ID 和密钥 这是一个严格的限制吗 如果我觉得足够好 我还可以继续使用 128 位密钥空间吗 选择这个长度是因为用作哈希表键的哈希函数的 SHA1 输出 160 位 这是当时使用最
  • BitTorrent 扩展协议

    我正在尝试用java编写自己的bittorrent客户端 这是一个make work项目来刷新我的java技能 我一直停留在开发的某个阶段 尽管有一些用于 BitTorrent 开发的论坛 但它们似乎并不十分活跃 到目前为止我可以执行以下操
  • 当 DHT 中的节点死亡时,数据会发生什么?

    问题取自这里 https groups google com forum topic byu cs 460 computer networking hpESI0NapmY https groups google com forum topi
  • Bittorrent 协议如何处理数据块?

    BitTorrent 协议中如何处理数据块 当客户想要下载时 例如Linux 发行版中 跟踪器是否返回对等点列表 然后客户端连接到该列表并向每个对等点请求块 或者跟踪器是否返回对等点列表以及哪个对等点具有哪些数据的信息 数据块在哪里管理或处
  • 使用 libtorrent-python 下载 Torrent

    我有以下 python 代码 import libtorrent as lt import time ses lt session ses listen on 6881 6891 params save path home download
  • 种子中的 DHT

    我正在编写一个 P2P 实现 我希望将其去中心化 然而我在掌握如何做时遇到了一些困难DHT https en wikipedia org wiki Distributed hash table在像 BitTorrent 这样的协议中是有效的
  • 解码 Torrent 追踪器抓取的 Torrent 哈希值?

    我在用BEncoded PHP 库 http proger i forge net BEncoded E2 80 93 handling torrent files in PHP 7Tn解码来自 Bittorrent 跟踪器的编码响应 Tr
  • 将下载的 torrent 保存在内存中而不是文件 libtorrent

    使用 Rasterbar libtorrent 我不希望下载的数据放在我的硬盘上 而是放在管道或变量或软的东西上 这样我可以将其重定向到其他地方 Mysql 甚至垃圾 如果它不是我想要的 有没有如果不是使用 Libtorrent 在 C 中
  • 在 Python 中使用 Rasterbar libtorrent 加载 Magnet LINK

    如何通过 rasterbar libtorrent python 绑定加载 Magnet 链接 import libtorrent as lt import time ses lt session params save path home
  • BitTorrent DHT 详细规范

    在我的新周末项目中 我决定从头开始编写一个 BitTorrent 客户端 根本没有准备好使用库 经过两天寻找文档后 我已经准备放弃了 smile 我知道有BEPs http www bittorrent org index html 但它们

随机推荐

  • Django 找不到模板

    我知道很多人都问过这个问题 但是尽管对我的模板目录的路径进行了硬编码 但我似乎无法让 Django 找到我的模板 这是设置 py TEMPLATE LOADERS django template loaders filesystem Loa
  • C# 暂停/恢复上传

    我正在寻找一种通过 C 的 WebClient 暂停或恢复上传过程的方法 伪代码 WebClient Client new WebClient Client UploadFileAsync new Uri http mysite com r
  • R 中的反应性与玩具示例闪亮

    我正在改变这个例子 https gist github com wch 5436415 下面是一个玩具模型 基本上 我需要 selectInput 具有反应性 每次 selectInput 更改时 所选值都会传递给 global r 中的函
  • Apache 虚拟主机不适用于子域

    我有这个配置 但 url app test com 和 stage test com 重定向到相同的代码 部署
  • Spring MVC: 选项不会保持选中状态

    我有一个用于添加新老师的简单表格 我正在使用春天
  • PyQt 多个 tablewidgets 和 tabwidgets

    我的目标是显示 10 个或更多QTabWidget在一个单一的QMainWindow 每个选项卡都有一个唯一的QLabel and QTableWidget 像这样的事情 尽管我设法通过使用以下代码获得预期结果 但我想知道是否有更有效的方法
  • 使用 CSS 均匀分布高度

    我有一个非常棘手的 HTML 问题 我不确定是否有基于 CSS 的解决方案 基本上我有一个三列网格 第一列和第三列可以包含可变数量的行 第二列始终只有一行 每行都有一个最小高度 因此 行数最多的列将具有高度设置为最小高度的所有行 其他列中的
  • 循环遍历可点击元素列表并将 html 写入相应的文件

    我正在使用 jQuery 来获取包含某些关键字的元素列表 我能够获取元素列表 但我不知道如何循环每个元素 单击其子元素并下载新加载的页面 这是我到目前为止的 casperjs 代码 var casper require casper cre
  • awk:致命:无法打开文件“”进行读取(没有这样的文件或目录)

    我正在尝试从网格中的节点读取 x 和 y 坐标 所有节点的坐标都在文件mesh coords xyz中 我想要第 1055 行 它指的是一个叫哈利斯科的地方 nodes file output ascii mesh coords xyz j
  • 是否有可能在 JavaScript 中实现任意精度的算术而不存在舍入问题?

    我尝试过big js bignumber js 和decimal js 它们在某种程度上都工作得相当好 但是当我需要使用足够多的 奇数 数字进行任意精度计算时 它们就显得不足了 我当前的测试用例是31435517643980 1 31435
  • 如何在分布式环境中存储盐

    我不知道如何在我的场景中使用 盐概念 假设我有一个客户端桌面应用程序 它为特定用户加密数据并将其发送到远程服务器 客户端应用程序使用 PKCS 5 生成密钥 其中包含用户密码和 SALT 远程桌面绝不能接触用户的密码 假设我们为加密生成随机
  • gnuplot x 直方图中的标签位置

    我有以下数据 t 4 24 3 0 0 t 6 37 4 0 0 t 8 51 4 2 0 t 4 15 1 0 0 t 6 21 0 0 1 t 8 30 0 0 1 t 4 13 2 1 0 t 6 20 3 1 0 t 8 22 4
  • 在 PHP 中将“原始”字符串格式化为 Java UUID [重复]

    这个问题在这里已经有答案了 是否有一种更有效 更简单的方法可以在 PHP 中将 格式化 Java UUID 不带破折号 转换为 Java 兼容格式 带破折号 最终 我将如何做到这一点 我已经有执行此操作的代码 但它似乎不专业 我觉得它可能可
  • 语法/智能感知损坏?

    我正在使用 Visual Studio 2010 它似乎突然坏了 我打开了一个解决方案 打开了一个类并添加了 namespace Admin public static class SessionManager public static
  • 使用 Apache FtpClient 计算 FTP 服务器中的文件校验和

    我正在使用 Apache Commons Net 的 FtpClient 将视频上传到 FTP 服务器 为了检查文件是否确实已成功传输 我想计算远程文件的校验和 但不幸的是我发现没有相关的API可以使用 我的问题是 ftp服务器是否需要计算
  • Java JNA sendMessage() 未找到

    我正在尝试使用JNA 概述 当最小化或不在顶部时 例如鼠标单击 向应用程序发送消息 我发现人们正在使用 com sun jna platform win32 User32 发信息A hW 0x0201 0 0 但我在这个类中找不到这个函数
  • 使用 Request.Files["files"] MVC 上传多个文件

    这是我的守则 我想将 3 个文件更新到我的数据库中 首先在视图中我写了这个 这是 3 个文件上传
  • 如何在 .ready() 期间更改文档的标题?

    我在 Ruby on Rails 中使用一些嵌套布局 在其中一个布局中 我需要从 div 中读取字符串并将其设置为文档的标题 设置文档标题的正确方法是什么 如果有 以下内容应该可行 但不兼容 SEO 最好将标题放在标题标签中
  • 在我的应用程序中登录 Facebook/Twitter

    我正在开发我的网站 在我的网站中我希望用户通过他们的登录 社交网络凭据 例如 Facebook 和 Twitter 当这些用户在我的网站上进行任何活动时 我应该如何跟踪他们 假设用户使用 Facebook 用户名和密码登录 现在他被重定向到
  • 最新的 BitTorrent DHT 实施建议是什么?

    我正在努力实现另一个 BitTorrent 客户端 目前正在与 DHT 作斗争 是按照这个规范来实现的http www bittorrent org beps bep 0005 html但开始调试它时 我注意到网络上其他节点的响应有所不同