2001 年 4 月,一个 26 岁的美国程序员 Bram Cohen 在 Y Combinator 的前身邮件列表里贴出了 BitTorrent 的第一个可用版本。他在公告里写得很克制:“这是一个用 swarm 方式分发文件的工具,目标是让发布者不需要准备大带宽也能让很多人下到东西。”今天我们回头看这句话,会发现它的真正革命性不在技术参数,而在它悄悄改写了“下载”这个动作的权力结构。

在 BitTorrent 出现之前,任何想在网上发布 1GB 文件的个人或小公司,都需要解决一个近乎无解的问题:你的服务器买多宽的带宽才够?在 2001 年,1Mbps 的服务器托管月费就要几百美元,而一份 Linux 发行版 ISO 可能被几千人下载。买带宽等于破产,不分发等于没人用。

把分发变成去中心化的“水龙头网络”

BitTorrent 的核心洞见非常朴素:正在下载的人,手里已经有了一部分文件,他完全可以同时把这一部分上传给其他还没下完的人。这个简单的想法把下载模型从“中心水管”改成了“水龙头网络”——第一个下载者从原始发布者那里拿数据,然后他和后面所有下载者彼此互传,人数越多,网络的总带宽越大。

这就是 Bram Cohen 反复强调的“tit-for-tat”策略——你愿意上传多少,你就能下载多少。它不是慈善,不是道德,是协议本身写死的激励机制。在 BitTorrent 网络里,一个只下载不上传的人,最终会被所有 peer 抛弃,因为他没东西可以交换。

这套机制让一个完全没人听说过的小网站,也能在没有任何 CDN、没有任何大带宽的前提下,让几百人同时下载他的文件。在 Linux 发行版的早期岁月里,这几乎是唯一的可行方案。RedHat、Debian、Ubuntu 早期的镜像分发,绝大多数流量都走 BitTorrent,而不是 HTTP。

。torrent 文件里到底写了什么

BitTorrent 用一种叫 。torrent 的小文件来描述下载任务。它的体积通常只有几十到几百 KB,但里面包含了完整下载所需的全部元信息:目标文件的总大小、文件名、目录结构,以及最重要的——文件被切成的一个个“分片”(piece)的 SHA-1 哈希值数组。

这些哈希值的作用远不只是校验完整性,它是 BitTorrent 的去重基础。下载过程中,客户端可以向多个 peer 同时请求不同的分片,拿到任何一个分片后,用哈希校验其完整性;如果校验失败,丢掉重下。整个过程没有依赖任何一台中心服务器去“保证文件是对的”。

。torrent 文件本质上是一份“文件食谱”——它不存文件本身,只存如何重建这份文件的全部信息。这种“内容和位置解耦”的思路,后来成了 IPFS 和 Filecoin 的精神祖先。

Tracker 与 Swarm 的协调机制

BitTorrent 早期的设计中,所有下载者需要向一台叫 Tracker 的服务器报到。Tracker 不存任何文件,它只做一件事:记录这个 swarm(下载同一份文件的群体)里有哪些人、他们各自下完了哪些分片、他们当前在线状态如何。每个客户端连上 Tracker 后,会拿到一个随机 peer 列表,然后挨个去握手、交换分片。

这套设计很优雅,但它有一个明显弱点:Tracker 是中心化的。如果 Tracker 宕机、Tracker 域名被封、Tracker 服务器关停,整个 swarm 就会陷入瘫痪。2000 年代中后期,很多热门资源的下载,会因为唯一的 Tracker 挂了而彻底死掉。这是个讽刺——一个号称去中心化的协议,在关键路径上仍然依赖一台中心服务器。

磁力链接和 DHT 网络的出现,正是为了解决这个问题。下一篇我们会展开讲。

BitTorrent 留给后世的真正遗产

BitTorrent 在 2005 年达到顶峰,峰值时贡献了全球互联网总流量的近三分之一。这个数字后来被 Netflix 和 YouTube 超过,但它解决了一个 P2P 时代最重要的认知问题——下载者不只是消费者,他们是网络的一部分。每个下载者贡献的上行带宽,叠加起来可能超过原始发布者的带宽总和。

这套思路的影响远远超出文件下载本身。今天的 IPFS、Filecoin、Arweave,几乎每一个“内容寻址”和“存储市场”的设计,都能在 BitTorrent 里找到原型。把内容切成片、用哈希寻址、让存储者相互竞争激励——这些都不是 BitTorrent 发明的,但 BitTorrent 是第一个把它们大规模证明可行的协议。

BitTorrent 没解决的事

BitTorrent 也有它的天花板。它最擅长的是“热门资源的速度爆炸”,但对冷门资源极不友好。一个十年前的老种子,如果没人做种、Tracker 也失效了,它在 BitTorrent 网络里就等于消失。BitTorrent 不解决“持久性”,也不解决“可寻址性”——你必须先知道一份 。torrent 文件或者一个磁力链接,才能下载它。

这正是后面 IPFS 和 Arweave 想根治的问题。在 IPFS 的世界里,只要内容还在任何一个节点上,它的 CID 就永远有效;在 Arweave 的世界里,你甚至可以保证它至少存续一百年。但那是后面的故事,下一篇我们要先看看 BitTorrent 是怎么“自我革命”、通过磁力链接和 DHT 摆脱对 Tracker 的依赖。

参考资料