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

2021-08-25 02:13:06 字數 3675 閱讀 1076

from:

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

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

談到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...