Mainline DHT
Mainline DHT 是一种基于 Kademlia 的分布式哈希表,供 BitTorrent 客户端使用,无需完全依赖中心化 tracker 即可发现对等节点。
最近更新 2026年11月4日
AI 爬虫读取
1次请求
1家公司- Anthropic1
- 词条页
- 1
- 争议页
- 0
- JSON · MD
- 0
- 首次读取
- 2026年11月4日
- 最近读取
- 2026年11月4日
统计自 2026年10月28日 · 数据来自本站服务器日志
概览
Mainline DHT 是集成到 BitTorrent 客户端中以支持去中心化对等节点发现的分布式哈希表的常用名称。该系统不是将 tracker 视为定位 torrent 群中其他参与者的唯一目录,而是允许客户端通过分布式覆盖网络发布和检索对等节点联系信息。它基于 Kademlia 设计,并使用 torrent 元数据的 SHA-1 哈希(称为 infohash)作为查找键。 该技术出现在 BitTorrent 去中心化跟踪扩展期间。BitTorrent 的 DHT 最初于 2005 年 5 月在 Azureus 2.3.0.0(后更名为 Vuze)中实现。大约同一时期,BitTorrent, Inc. 在其自己的客户端中引入了类似系统。该实现后来与 Mainline BitTorrent 客户端广泛关联,并帮助在 BitTorrent 生态系统中普及了基于 DHT 的对等节点发现。Mainline DHT 于 2005 年 11 月包含在 BitTorrent 软件 4.2.0 版本中,随后被多个其他客户端采用或实现。 在操作上,每个参与节点选择一个随机的 160 位标识符。节点距离使用 XOR 运算计算,遵循 Kademlia 的方法。节点在 k-bucket 中维护路由信息,其中包含根据标识符距离组织的已知对等节点。当客户端想要查找 torrent 的对等节点时,它会搜索其标识符接近 torrent infohash 的节点。它发送迭代的 get_peers 查询,接收对等节点信息或更近的节点联系,并继续搜索,直到覆盖网络的相关部分已被探索。找到对等节点的客户端还可以向接近同一 infohash 的节点宣布自己的联系信息,从而允许后续参与者发现它。 Mainline DHT 使用令牌机制来限制未经授权的宣布。接收对等节点查找的节点获得一个不透明令牌,并且当尝试为该 torrent 宣布对等节点地址时,必须返回最近发布的令牌。该令牌与宣布节点的 IP 地址和轮换密钥绑定,根据协议描述,令牌有效期最长为十分钟。这有助于防止一个参与者任意注册由另一主机控制的地址。 节点通过 KRPC 通信,这是一种通过 UDP 承载的轻量级远程过程调用协议。KRPC 消息是包含事务标识符和消息类型字段的 bencoded 字典。它们可能表示查询、成功响应或错误。查询消息包含方法名称和参数;响应包含返回值;错误提供数字代码和解释性消息。这种相对简单的消息格式支持大型对等覆盖网络所需的高容量、低开销交换。 路由表设计在实现细节上不同于字面上的 160-bucket Kademlia 表。Mainline DHT 节点从一个 bucket 开始。当该 bucket 变满时,它可能被拆分或检查其现有节点,当节点自己的标识符位于 bucket 范围内时允许拆分。这种方法在路由表较小时限制内存使用,并有助于确保搜索能够获得足够的附近联系,而无需常规地咨询相邻 bucket。 Mainline DHT 成为与 BitTorrent 相关的最重要的去中心化协调系统之一。主题参考材料中引用的测量表明,到 2013 年,其并发用户数达到约 1600 万至 2800 万,日内变化至少 1000 万。这些数字描述的是网络参与,而不是传统的商业客户群。因此,Mainline DHT 更适合被理解为一种协议和分布式基础设施组件,而不是面向消费者的产品品牌。其持续相关性来自于它在实现无 tracker 的 torrent 操作方面的作用,以及一系列 BitTorrent 兼容客户端的实现。
沿革
Mainline DHT 源于使 BitTorrent 对等节点发现减少对中心化 tracker 依赖的努力。在原始的 tracker 导向模型中,客户端联系 tracker 以获取参与 torrent 的其他对等节点的网络地址。分布式哈希表提供了一种替代方案:客户端可以在去中心化覆盖网络中存储和检索对等节点联系信息,从而即使没有中心 tracker,群组也能保持可发现性。 BitTorrent DHT 概念最初于 2005 年 5 月在 Azureus 2.3.0.0(后更名为 Vuze)中实现。大约同一时期,BitTorrent, Inc. 在其自己的客户端中发布了类似的 DHT。后一种实现被称为 Mainline DHT,并帮助将基于 DHT 的跟踪确立为 BitTorrent 协议家族中广泛使用的部分。它于 2005 年 11 月进入 BitTorrent 软件 4.2.0 版本。其他 BitTorrent 客户端随后实现了该协议或其兼容部分,将其影响力扩展到原始 Mainline 客户端之外。 该系统遵循 Kademlia 的核心思想。每个节点选择一个随机的 160 位标识符,XOR 运算确定节点标识符之间的距离。Torrent 元数据由从 torrent 的 SHA-1 身份派生的 infohash 表示。为了定位对等节点,客户端在其路由表中搜索最接近该 infohash 的节点,并发送迭代的 get_peers 请求。节点要么返回已知对等节点,要么提供更接近请求键的联系。一旦客户端找到群组中的参与者,它就可以向负责相同键空间的节点宣布自己的联系信息。 Mainline DHT 的路由表使用 k-bucket,但其组织针对 BitTorrent 节点的预期行为进行了优化。节点最初维护一个 bucket,而不是立即创建完整的 160 个 bucket 集合。当 bucket 填满时,如果节点自己的标识符落在 bucket 范围内,则可以拆分;否则,可以检查现有节点。该设计减少了较小路由表的内存需求,并旨在使附近节点搜索高效,而无需常规扩展到相邻 bucket。 通信通过 KRPC 进行,这是一种使用 UDP 和 bencoded 字典的紧凑远程过程调用协议。每条消息都有事务标识符,以便将回复与未完成的请求关联,以及区分查询、响应和错误的类型标记。查询方法携带命名参数,成功回复携带返回值,错误消息包括代码和文本。该协议的有限结构支持大量松散协调节点之间的频繁交换。 令牌机制为对等节点宣布提供了基本保障。节点在响应对等节点查找时提供令牌,宣布客户端必须返回由同一节点发布的最近令牌。该令牌源自客户端的 IP 地址和定期更改的密钥;接受最多十分钟的令牌。这防止参与者代表无关主机自由宣布任意地址。 到 2013 年,为 Mainline DHT 引用的已发布测量表明并发用户数约为 1600 万至 2800 万,日内变化至少 1000 万。这些数字说明了覆盖网络的规模,而不是收入或销售,因为 Mainline DHT 是协议组件,而不是传统的商业公司。其历史重要性在于使无 tracker 的 BitTorrent 操作在全球范围内变得实用,并提供多种客户端实现的通用对等节点发现机制。
产品与定位
BitTorrent 协议的去中心化、不依赖 tracker 的对等节点发现层,强调分布式操作、可扩展查找以及跨 BitTorrent 客户端的兼容性。
分布式哈希表协议 · 2005
Mainline DHT
一种基于 Kademlia 的覆盖网络,BitTorrent 客户端通过 torrent infohash 定位对等节点。它维护分布式路由表,支持迭代对等节点查询和宣布,并实现跨参与客户端的无 tracker 发现。
对等网络 RPC 协议 · 2005
KRPC
Mainline DHT 节点使用的基于 UDP 的通信协议。KRPC 将查询、响应和错误表示为 bencoded 字典,并使用事务标识符将响应与请求匹配。
品牌决策
2005
采用去中心化对等节点发现新品背景
BitTorrent 客户端需要一种不完全依赖中心化 tracker 来发现群组参与者的方式。
采取的行动
将 Kademlia 衍生的分布式哈希表纳入 BitTorrent 软件,并使用 torrent infohash 进行对等节点查找和宣布。
后续影响
该方法普及了无 tracker 的对等节点发现,随后被多个 BitTorrent 客户端实现。
来源1 个来源
引用本词条: 请引用规范词条页。 /brand-wiki/mainline-dht · 编辑方针 · 词条如何编纂