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協議規範
- 類型：點對點網路文件分享