BitTorrent (协议)

<image>

BitTorrent协议（简称BT，俗称比特洪流、BT下载）是用在对等网络中文件分享的网络协议程序。和点对点（point-to-point）的协议程序不同，它是用户群对用户群（peer-to-peer），而且用户越多，下载同一档案的人越多，上传同一文件的人越多，下载该档案的速度越快。且下载后，继续维持上传的状态，就可以“分享”，成为其用户端节点下载的种子文件（.torrent），同时上传及下载。

## 历史

该技术由美国的程序员布莱姆·科亨于2001年4月时发布，并于2001年7月2日时首次正式应用。

## 原理简述

<image>

普通的HTTP／FTP下载使用TCP/IP协议，BitTorrent协定是架构于TCP/IP协定之上的一个P2P档案传输通讯协定，处于TCP/IP结构的应用层。BitTorrent协定本身也包含了很多具体的内容协定和扩展协定，并在不断扩充中。

根据BitTorrent协议，文件发布者会根据要发布的文件生成提供一个.torrent文件，即种子文件，也简称为“种子”。

种子文件本质上是文本文件，包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置，文件信息是根据对目标文件的计算生成的，计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块，块大小必须为2k的整数次方（由于是虚拟分块，硬盘上并不产生各个块文件），并把每个块的索引信息和Hash验证码写入种子文件中；所以，种子文件就是被下载文件的“索引”。

下载者要下载文件内容，需要先得到相应的种子文件，然后使用BT客户端软件进行下载。

下载时，BT客户端首先解析种子文件得到Tracker地址，然后连接Tracker服务器。Tracker服务器回应下载者的请求，提供下载者其他下载者（包括发布者）的IP。下载者再连接其他下载者，根据种子文件，两者分别告知对方自己已经有的块，然后交换对方所没有的数据。此时不需要其他服务器参与，分散了单个线路上的数据流量，因此减轻了服务器负担。

下载者每得到一个块，需要算出下载块的Hash验证码与种子文件中的对比，如果一样则说明块正确，不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载，发布文件仅在某个或某几个服务器，下载的人太多，服务器的带宽很易不胜负荷，变得很慢。而BitTorrent协议下载的特点是，下载的人越多，提供的带宽也越多，下载速度就越快。同时，拥有完整文件的用户也会越来越多，使文件的“寿命”不断延长。

为了解决某些用户“下完就跑”的现象，在非官方BitTorrent协议中还存在一种慢慢开放下载内容的超级种子的算法。

## DHT网络

目前，又发展出DHT网络技术，可以在无Tracker的情况下下载。

DHT全称为分布式哈希表（Distributed Hash Table），是一种分布式存储方法。在不需要服务器的情况下，每个客户端负责一个小范围的路由，并负责存储一小部分数据，从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件，用户无需连上Tracker就可以下载，因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯，开始下载任务。

有些软件（如比特精灵）还会自动通过DHT搜索种子资源，构成种子市场。

另外，这里使用的DHT算法叫Kademlia（在eMule中也有使用，称为Kad网络，具体实现协议有所不同）。

这种技术好处十分明显，就是大大减轻了Tracker的负担（甚至不需要）。用户之间可以更快速建立通讯（特别是与Tracker连接不上的时候）。

## BT中相关概念

- Tracker：收集下载者信息的服务器，并将此信息提供给其他下载者，使下载者们相互连接起来，传输数据。
- 种子：指一个下载任务中所有文件都被某下载者完整的下载，此时下载者成为一个种子。发布者本身发布的文件就是原始种子。
- 做种：发布者提供下载任务的全部内容的行为；下载者下载完成后继续提供给他人下载的行为。

## BitTorrent与自由软件

BitTorrent对于大型文档和自由软件如Linux、FreeBSD的发布帮助很大。对于发布数百MiB以至数十GiB的档案时，如Fedora的光碟镜像格式档，BitTorrent的使用能大大减低服务器的数据流量从而减低发布的成本。另外，一般有新版本软件推出时，链接该服务器的人数必定非常庞大，使用BitTorrent也能大大减低繁忙时间服务器的负担。

## 历史

2002年，布莱姆·科亨在CodeCon初次露面，发表首个BT软件BitTorrent。它以Python写成，以MIT许可证发布。

## 影响

以线上游戏为例，有些线上游戏的线上更新（如魔兽世界）就是采用BT的技术。所以当每次有改版时，动辄数百MiB的更新档，透过游戏厂商所提供的更新程式，以BT的方式进行下载分流。这为以往的其他种线上游戏，每次重大改版就必须重新压制光碟，或是等待单一下载点的下载方式，带来另一种节省成本的经营模式。

BT下载方式目前引起社会的广泛讨论。利用BT免费发布版权内容肯定损害版权所有者的合法权益，但传播非收费性内容的好处有目共睹。争论的焦点是，是否应因此立法全面禁止BT，并且对从事BT下载的人作出惩罚。目前为止，中国大陆和西欧等地区的国家，对BT仍没有任何法律上的约束。不过2009年12月，国家广播电影电视总局曾大范围打击和封锁在中国的Tracker服务器，以BTChina为代表的一批知名Tracker服务器均因此停止服务。

在香港，陈乃明因为发布电影的种子而被海关拘捕。2005年10月24日，香港司法机关裁定陈乃明的侵权罪成立，需要即时监禁三个月。香港工商贸易部门领导曾俊华与海关关长汤显明对今次裁决感到满意，并表示香港政府和业界将不容忍任何侵权行为的存在，同时政府亦会随时与商人合作打击侵权行为。香港海关再于2008年9月及2009年4月先后拘捕两人，分别为一名27岁任职收银员的女性及一名38岁无业的男性。他们都被怀疑以BT非法上载两套外国电影而被捕，其中男疑犯涉及的电影为英国电影《故园风雨后》（Brideshead Revisited）及美国电视电影《十级飓风》（NYC: Tornado Terror）。他们成为当局自2007年中启用，24小时运作的“网线监察系统”（Lineament Monitoring System）以来首两名被捕者，使香港因以BT非法上载而被捕人士的总数提升至三名。

而台湾需受到美国特别301报告报复的压力，常与IFPI及商业软件联盟（BSA）等商业版权组织合作查缉提供BT来源的网站及讨论区，台湾论坛首度因为供应BT下载遭到被捕，卡提诺王国为全台湾最大的BT及违法分享的分享平台，也于不久后被法务部调查。

大部分的BT下载都是歌曲或影片，尤以后者为多。举个例子，一集电视剧的大小约200至300MiB，而电影则是几百MiB至几GiB（1GiB＝1024MiB），BT技术出现前，要下载这些类影片颇困难和花时间。因此BT的发展使互联网用户下载影片的数量大大增加。除了下载本地的歌曲影片外，用户同时也能下载其他国家地区的歌曲影片，一些在其他国家播放的电视剧或综艺节目，次日BT网站已能提供下载。所以BT的发展也促使互联网用户更加快地能接触到其他国家的影视，而不需等待自己国家购买回来播放或出版VCD／DVD才能看。这样使用户多了选择，不需只跟随本地电视台或电影院播映什么，就只看什么。同样地，他们的偶像也渐渐由本地化转为国际化，以中国大陆及台湾为例，年轻人追捧的偶像越来越多是来自其他国家，如日本、韩国等。而这或多或少和他们能以BT下载其电视电影，更快和更多地接触外地资讯娱乐有关。

## 外部链接

- Specification
- Computers/Internet/File_Sharing/BitTorrent
- Unofficial BitTorrent Protocol Specification v1.0 at wiki.theory.org
- Unofficial BitTorrent Location-aware Protocol 1.0 Specification at wiki.theory.org

## 基本资料

- 作者：布莱姆·科恩
- 开发者：Rainberry, Inc.
- 发行日期：2001年
- 标准：BitTorrent协议规范
- 类型：点对点网络文件分享