现在的位置: 首页 > 综合 > 正文

透視BT(一)­­── BT的基本運作原理

2014年09月05日 ⁄ 综合 ⁄ 共 3159字 ⁄ 字号 评论关闭

From: http://mmdays.wordpress.com/2007/04/06/bt1/

 

 

透視BT(一)­­── BT的基本運作原理

 

談到BT,相信大家都不陌生。沒錯,今天要來談的就是這幾年在網路上非常重要,已經快要變成全民運動的── BT 程式。筆者有鑒於 BT 已經變成非常火紅的應用程式,但是了解這個程式的基本運作原理與影響的人卻寥寥無幾,於是決定撰寫這個主題;本篇會先介紹 BT 的源起與運作原理,接下來的幾篇則會根據這一兩年學術上對 BT 的觀察,介紹 BT 在各種使用情境下對網路行為的影響(當中包含一些相當出人意表的發現)。

 

BitTorrent ,簡稱 BT ,由 Bram Cohen 2002 年獨立完成其核心程式碼的撰寫。從 Bram Cohen 簡陋而陽春的個人網頁 上看來,他於 1993 年進入紐約州立大學就讀,輟學之後陸續做過研究員、網路程式設計師,就履歷上看來並不是非常特出, 2002 年間他發表的 BT 一開始也沒有獲得很大的關注。隔年五月他把 BT 的理論基礎寫成一篇簡短五頁的學術文章發表在「 Workshop on Economics of Peer-to-Peer Systems, 2003 」上 ,文章本身沒有知名教授的背書、用字遣辭顯然也不夠精練,然而這篇文章至今卻已累積了 474 篇的 reference 數。 2004 年六月時,據 CNN 報導, BT 已經佔據了網路上所有 P2P 流量的 53% 。至今, BT 程式檔的下載量已經超過一億三千五百萬人次,而這些數字還不包含網路上經其他使用者修改過的版本,如 BitComet BitSpirit… 等等。

Bram Cohen照片

Bram Cohen照片,在他blog裡還有各種用電腦變形過後的照片 ,例如變身成美少女戰士的樣子

Mr. Friday 自己的觀察, BT 程式已經成為眾多網路鄉民平日不可或缺的「資料來源」之一,就算沒有使用過,或多或少也會在生活中聽到相關的用語,比如說 torrent 檔、種子、斷種等等術語。更有甚者,許多網路應用也開始使用 BT 的模式,比如說某些 Linux ISO 檔、魔獸世界 WOW 的更新檔就是透過 BT 方式在網路上散佈,也有一些網路電視程式是從 BT 處得到靈感來源,例如現在相當火紅的 PPStream

 

BT 最讓人驚奇的地方在於下載的速度極快。使用過的人都曉得, BT 下載往往比傳統的 FTP 、網頁下載來得快很多。這當中的原理可以從下圖解釋:

 

FTP vs BT

左圖是 FTP HTTP 下載的基本原理,道理很簡單,擁有檔案的人負責將檔案傳送給所有想下載檔案的人。假設今天的同時下載這個檔案的人有三個( A B C ),則每個人的下載速度就是檔案擁有者上傳速度的 1/3

 

BT 的原理就比較複雜一點。擁有檔案(例如 File.txt )的人(稱為種子)會將檔案切很多很多的小塊(例如 File1.txt File2.txt File100.txt ),每當有人(假設也叫 A )想下載檔案時,種子(或者其他的下載者)就把一部份的小塊檔案寄給這個 A A 就拿著這些檔案片段去跟另外一個也在下載的人 B C 說:「 Hey !我有一部分的小檔案,你也有一部分的小檔案,我們來互相交換彼此沒有的部分吧!」。對於 A 來說,他就可以同時從種子與 B C 處抓取檔案片段,因此下載的速度就會變快,而不僅限於種子頻寬的 1/3 。如果今天網路上的下載者不只 2 個,而是成千上萬,那麼理論上 A 的速度就可以一飛千里。透過這個「下載者互通有無」的想法,讓下載的速度來得比以往的 FTP HTTP 還快。

 

BT 對於分享檔案的種子也有好處。以往如果要讓所有的下載者都抓到檔案,種子就不能下線,直到所有人都抓完檔案為止。頻寬的消耗也是單方面的:只消耗種子的上傳頻寬,因此常常造成種子端的網路塞車。 BT 就不會這樣:只要網路上出現另外一個把整個檔案都下載成功的人,等於就是出現另外一個新種子,原來的種子就可以下線休息去了──甚至不用等到新種子出現!沿用前例,原先的種子把檔案片段 1~3 給了 A ,片段 4~6 給了 B ,片段 7~10 給了 C ,那麼就算種子下線休息去了, ABC 之間仍然能夠透過互通有無的機制,把檔案下載成功。 BT 一方面減輕了單一種子的負擔,另一方面也延長了檔案的壽命-就算原先種子離開了,如果 A B C 當中有人志願留下來等到新下載者 D 出現,那麼檔案就能繼續流傳下去。

 

當然,要讓這套機制成功,還有幾個配套的措施:

(1) Torrent 檔與 Tracker

由於 BT 中的種子、下載成員一直在變動,必須要有方法讓其他新成員找到他們,因此就出現了 Torrent 檔與 Tracker Tracker 是個小程式,紀錄著目前所有下載成員的名單與網路位置。 Torrent 檔則是紀錄 Tracker 的位置與檔案片段的全部名稱。因此對於新成員來說,他首先要獲得的就是一個 torrent 檔,從 torrent 檔中他知道 tracker 的位置,然後再經由 tracker 與其他下載成員取得聯繫。

 

(2) Rarest First Policy

為了增進檔案分享的速度,每個成員會盡量分享網路上最少見的檔案片段。例如 A 擁有片段 1 2 3 B 擁有 2 4 5 C 擁有 1 3 5 ,則網路上最罕見的是片段 4 ,因此若有人想向 B 互通有無, B 會優先傳給他片段 4

 

(3) Choking Policy

當一個檔案很流行的時候,一個 BT 系統可能會同時擁有成千上萬的下載者。 A 身為一個參與者,必定會收到非常多人希望跟他交換檔案的請求。但是 A 的頻寬很小,只允許同時上傳給 4 個人(在 BT 最初原始程式裡預設是 4 ;其他軟體的設定就不一定了,我知道 BitComet 之前是 10 個),那麼 A 要如何決定拒絕這當中的誰呢?這叫做 choking (拒絕) policy BT 的做法是:接受( unchoke )那些現在正上傳檔案給我、而且速度最快的前 4 個人! BT Choking Policy 至為重要,因為它傳達出一種「施比受更有福」的概念:願意付出更多上傳頻寬的人,將會收到其他人的回報-更快的下載速度 。日後有許多關於 BT 的研究,都是針對這個特性作一番探討。

 

(4) Optimistic Unchoking

承續前述的理念,想要獲得更快的下載速度,就應該先將檔案分享給別人。 Optimistic Unchoking 是說,每個人每 30 秒就挑網路中任意一個人,將檔案上傳給他。這麼作的用意是發掘網路上未知的潛力檔案提供者:假如 A K 之前並未有檔案的往來,但其實這兩個人住得很近,網路互傳的速度比其他人快。今天 A 透過 Optimistic Unchoking 隨機給 K 上傳了一些檔案片段,讓 K 驚覺 A 的上傳速度很快,進而允許 A K 處下載檔案片段。如果 A K 之間的連線速度很慢,那麼過 30 秒之後, A 會停止提供檔案給 K ,而去別處尋找下一個候選人。

 

透過上述的幾種機制, Bram Cohen 成功的開發出一套獨特的下載技術,也讓 BT 成為近幾年來最流行的話題,網路上更逐漸出現許多以 BT 為核心,內容卻略有不同的幾套下載軟體,如前述 BitComet BitSpirit 等。這些軟體多少在技術上修改了 BT ,比如說改變檔案傳輸時使用的 port 、改變同時最多上傳人數等等,但技術的基本概念卻是不變的:透過鼓勵分享,達到更快的下載速度。

 

接下來的幾篇,會引述幾篇學術上研究 BT 機制的論文,讓我們看看 BT 這套機制透過長時間實驗與數學流體模型、機率模型、排隊模型、賽局理論 …… 等等的驗證下,在各方面的效能如何?這些論文又會給我們什麼啟示?敬請大家拭目以待,下回再見。

 

延伸閱讀:

Bram Cohen的個人網頁

Bram Cohen的Blog

Wikipedia – Bram Cohen

透視BT(二)­­── 網路的頻寬分享與BT的隨機過程

透視BT(三)­­── 數字會說話, BT有什麼問題?

透視BT(四)── 為什麼BT沒有內建搜尋功能?

抱歉!评论已关闭.