附录 C:术语表
| 术语 | 含义 | 在源码中的位置 |
|---|---|---|
| Announce | 向 Tracker 报告 started/completed/stopped/periodic 状态并请求 Peer | announcer.* |
| Bitfield | 表示拥有/想要/请求的一组 piece 或 block 的紧凑位集合 | bitfield.* |
| Block | Peer Wire 请求与传输的基本字节单位 | block-info.* |
| Choke | 暂时拒绝对方普通上传请求的协议状态,不等于断连 | peer-msgs.cc、peer-mgr.cc |
| Completion | 根据已有 blocks 与 wanted files 派生完成度 | completion.* |
| Ctor | 收集 torrent 添加来源与覆盖参数的构造器 | torrent-ctor.* |
| DHT | 分布式哈希表,无中心 Tracker 的 Peer 发现 | tr-dht.* |
| Endgame | 下载尾声重复请求剩余 block 的经典策略;当前快照的 Wishlist 主路径避免重复请求 | Peer Manager / Wishlist |
| Fast Extension | HAVE_ALL、HAVE_NONE、SUGGEST、ALLOWED_FAST、REJECT 等扩展 | peer-msgs.cc |
| Fruitless connection | 已连接但没有有效 piece 传输的历史,用于候选降权 | tr_peer_info |
| Handshake | 交换协议名、flags、info hash 与 peer id 的 68 字节阶段 | handshake.* |
| Info hash | Torrent info dictionary 的稳定内容身份 | torrent-metainfo.* |
| Interested | 一方声明对另一方拥有的数据感兴趣 | peer-msgs.cc |
| LPD/LSD | 局域网组播 Peer 发现 | tr-lpd.* |
| LTEP | BitTorrent Extension Protocol,承载 metadata、PEX 等 | peer-msgs.cc |
| Magnet | 以 info hash 为核心、可在无完整 metainfo 时启动的 URI | magnet-metainfo.* |
| Mediator | 子系统反向访问少量宿主能力的窄接口 | Session/Torrent 内部类 |
| Metainfo | .torrent 中的 tracker、文件、piece hash 等结构化元数据 | torrent-metainfo.* |
| MSE | Message Stream Encryption,握手期协商的流量混淆 | peer-mse.*、handshake.* |
| Peer atom/info | 已知 Peer 地址及来源、失败、能力等长期候选记录 | peer-mgr.cc |
| Peer ID | 客户端在一次 torrent 参与中的 20 字节身份 | types.h、handshake.* |
| PEX | 已连接 Peer 通过 LTEP 交换邻居 | peer-msgs.cc |
| Piece | Metainfo 中有独立 hash 的完整性和可用性单位 | block-info.* |
| Quark | 驻留字符串对应的小整数 key | quark.* |
| Rarest-first | 优先选择当前 Peer 集合中复制数较少的 piece | peer-mgr-wishlist.* |
| Rechoke | 周期重算哪些 interested Peer 获得上传权限 | peer-mgr.cc |
| Reqq | 对端声明可接受的请求队列长度 | LTEP handshake / peer-msgs.cc |
| Resume | 每个 torrent 的可变状态快照,不是数据正确性的最终事实 | resume.* |
| Scrape | 只向 Tracker 查询 seed/leech/download 数,不取 Peer | announcer.* |
| Session | 一个 libtransmission 运行实例及其所有全局资源 | session.* |
| Swarm | 参与同一 torrent 的 Peer 集合及调度上下文 | peer-mgr.cc 中 tr_swarm |
| Tier | Multitracker announce list 中的故障切换组 | announcer.cc 中 tr_tier |
| µTP | 基于 UDP 的可靠拥塞友好传输 | tr-utp.*、peer-socket-utp.* |
| Variant | JSON 与 bencode 共用的动态值树 | variant.* |
| Webseed | 从 HTTP(S) 服务器获取 torrent 数据 | webseed.* |
| Wishlist | 维护候选 piece/block 并给 Peer 返回下一批请求 | peer-mgr-wishlist.* |
容易混淆的四组概念
Torrent id vs info hash
Torrent id 只在一次 Session 内方便 RPC/UI 索引,重启后可能变化;info hash 是跨重启与网络协议的稳定身份。
Raw speed vs piece speed
Raw 包括协议开销;piece speed 只计算文件 payload。限速与网络消耗关注 raw,UI 常展示 piece。
Stopped vs queued vs verifying
三者都可能“没有下载速度”,但原因不同。activity() 根据 verify、running、queued 与 completion 派生公开状态。
Remove torrent vs delete local data
前者移除任务和状态文件;后者还删除下载内容。RPC 的 delete_local_data 和 UI 的“移除/移到废纸篓”必须明确区分。