BitTorrent (協定)
原作者 | 布萊姆·科恩 |
---|---|
開發者 | Rainberry, Inc. |
首次發布 | 2001年 |
源代碼庫 | github |
標準 | BitTorrent協議規範[1] |
類型 | 點對點網絡文件分享 |
網站 | www |
檔案分享系列 |
檔案分享 |
---|
技術 |
網路及協定 |
發展和社會影響 |
非公開檔案分享 |
網站及服務 |
用戶端 |
串流 |
學術 |
國家/地區 |
相關條目 |
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非法上載而被捕人士的總數提升至三名[2][3][4]。
而台灣需受到美國特別301報告報復的壓力,常與IFPI及商業軟體聯盟(BSA)等商業版權組織合作查緝提供BT來源的網站及討論區,台灣論壇首度因為供應BT下載遭到被捕,卡提諾王國為全台灣最大的BT及違法分享的分享平台,也於不久後被法務部調查。
大部分的BT下載都是歌曲或影片,尤以後者為多。舉個例子,一集電視劇集的大小約200至300MiB,而電影則是幾百MiB至幾GiB(1GiB=1024MiB),BT技術出現前,要下載這些類影片頗困難和花時間。因此BT的發展使互聯網用戶下載影片的數量大大增加。除了下載本地的歌曲影片外,用戶同時也能下載其他國家地區的歌曲影片,一些在其他國家播放的電視劇或綜藝節目,次日BT網站已能提供下載。所以BT的發展也促使互聯網用戶更加快地能接觸到其他國家的影視,而不需等待自己國家購買回來播放或出版VCD/DVD才能看。這樣使用戶多了選擇,不需只跟隨本地電視台或電影院播映什麼,就只看什麼。同樣地,他們的偶像也漸漸由本地化轉為國際化,以中國大陸及台灣為例,年輕人追捧的偶像越來越多是來自其他國家,如日本、韓國等。而這或多或少和他們能以BT下載其電視電影,更快和更多地接觸外地資訊娛樂有關。
支持此協議的軟件
相關條目
參考文獻
- ^ Cohen, Bram. BitTorrent Protocol 1.0. BitTorrent.org. October 2002 [1 June 2020]. (原始內容存檔於8 February 2014).
- ^ 兩電影斬件上載古惑漢落網. 大公報. 2009-04-29 [2009-04-29]. (原始內容存檔於2013-04-28).
- ^ 分段上載電影侵權無業漢被拘. 明報/新浪. 2009-04-29 [2009-04-29]. (原始內容存檔於2009-07-07).
- ^ HK Man Arrested for Sharing Films with BitTorrent. Xinhua/CriEnglish.com. 2009-04-29 [2009-04-29]. (原始內容存檔於2009-06-14) (英語).
外部連結
- 官方網站
- Specification (頁面存檔備份,存於網際網路檔案館)
- 開放目錄專案中的「BitTorrent」
- Unofficial BitTorrent Protocol Specification v1.0 (頁面存檔備份,存於網際網路檔案館) at wiki.theory.org
- Unofficial BitTorrent Location-aware Protocol 1.0 Specification (頁面存檔備份,存於網際網路檔案館) at wiki.theory.org