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

2021-05-22 01:49:15 字數 4601 閱讀 2922

談到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**,在他blog裡還有各種用電腦變形過後的** ,例如變身成美少女戰士的樣子。

就mr. friday

自己的觀察,

bt程式已經成為眾多網路鄉民平日不可或缺的「資料來源」之一,就算沒有使用過,或多或少也會在生活中聽到相關的用語,比如說

torrent

檔、種子、斷種等等術語。更有甚者,許多網路應用也開始使用

bt的模式,比如說某些

linux

的iso

檔、魔獸世界

wow的更新檔就是透過

bt方式在網路上散布,也有一些網路電視程式是從

bt處得到靈感來源,例如現在相當火紅的

ppstream。

bt最讓人驚奇的地方在於下載的速度極快。使用過的人都曉得,

bt下載往往比傳統的

ftp、網頁下載來得快很多。這當中的原理可以從下圖解釋:

左圖是ftp與

下載的基本原理,道理很簡單,擁有檔案的人負責將檔案傳送給所有想下載檔案的人。假設今天的同時下載這個檔案的人有三個(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、

還快。

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沒有內建搜尋功能?

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

from 談到bt,相信大家都不陌生。沒錯,今天要來談的就是這幾年在網路上非常重要,已經快要變成全民運動的 bt 程式。筆者有鑑於 bt 已經變成非常火紅的應用程式,但是了解這個程式的基本運作原理與影響的人卻寥寥無幾,於是決定撰寫這個主題 本篇會先介紹 bt 的源起與運作原理,接下來的幾篇則會根據這...

BT種子的原理

這個可以分兩個層面來解釋下 1 torrent檔案的原理 如果您這個問題是指torrent檔案本身,那麼,當您對乙個檔案 或者資料夾 製作成.torrent檔案,實際上生成的.torrent檔案裡面主要包括了這些資訊 b 一般製作torrent檔案時,還會要指定乙個或者多個tracker的位址,比如...

一進行BT就ADSL掉線的解決

最近很鬱悶,一進行bt就adsl掉線 我用的是我們這電信的普天終端和tp link402m路由,故障是,只要bt,長則5分,短則5秒,必定什麼也連不上。1 上網搜尋,發現tp link的帖子很多說他的產品掉線,按照方法,更新了路由器軟體到最新版本,問題無法解決 2 去掉路由器,故障依舊,看來不是tp...