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