BitTorrent协议

**BitTorrent 協定**（簡稱 **BT**，俗稱**位元洪流**、**BT 下載**）是用在對等網路中檔案分享的網路協定程式。和對等（point-to-point）的協定程式不同，它是使用者群對使用者群（peer-to-peer），而且使用者越多，下載同一檔案的人越多，下載該檔案的速度越快。且下載後，繼續維持上傳的狀態，就可以「分享」，成為其使用者端節點下載的種子檔案（.torrent），同時上傳及下載。

## 歷史

該技術由美國的程式設計師布萊姆・科亨於 2001 年 4 月時發布，並於 2001 年 7 月 2 日時首次正式應用。

## 原理簡述

普通的 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 下載其電視電影，更快和更多地接觸外地資訊娛樂有關。

## 支援此協定的軟體

## 相關條目

* BitTorrent 協定規範
* Bencode
* PT 下載
* 字幕組

## 參考文獻

## 外部連結

* 官方網站
* Specification （頁面存檔備份，存於網際網路檔案館）
* 開放目錄專案中的「BitTorrent」
* Unofficial BitTorrent Protocol Specification v1.0 （頁面存檔備份，存於網際網路檔案館） at wiki.theory.org
* Unofficial BitTorrent Location-aware Protocol 1.0 Specification （頁面存檔備份，存於網際網路檔案館） at wiki.theory.org