Skip to content

Transmission 源码拆解从一次下载,读懂一个成熟的 BitTorrent 内核

基于 4.2.0-dev:沿真实运行链路拆解事件线程、Peer 协议、选块、存储、限速、RPC 与多端产品架构

14 章从架构到工程取舍
174核心 .cc/.h 文件
≈ 6.5 万libtransmission 代码行
59核心 *-test.cc 文件

这套文档回答什么

Transmission 表面上是一个“下载工具”,内里却同时处理异步网络、分布式 Peer 发现、不可信协议输入、大文件随机 I/O、资源公平分配、断点恢复、远程控制和跨平台 UI。它是一份难得的、仍在演进的桌面与服务端系统软件教材。

本教程围绕四个层次展开:

  1. 是什么:一个概念在 BitTorrent 系统里承担什么责任;
  2. 怎么做:源码中的对象、状态、定时器和回调如何接力;
  3. 为什么:为什么选择事件线程、分层带宽树、消息式错误和 RPC 边界;
  4. 怎么继续读:每章都给出最小源码锚点,避免掉进 6 万行代码的迷宫。

内容基线

文档基于工作区 transmission-main 快照,源码自身标记为 4.2.0-dev,RPC 版本为 6.1.0。上游源码链接指向官方 main 分支,因此文件内容和行号未来可能发生变化;关键符号名与调用关系已在当前快照中逐项核对。

这是一份源码导读,不是 BitTorrent 使用教程,也不是 Transmission 官方文档。涉及网络暴露、认证和文件删除的操作,请以官方文档与实际版本为准。

文档采用 CC BY-SA 4.0;源码片段保留 Transmission 上游许可。