查看積分策略說明發表回覆
Discuz! 代碼
提示插入
直接插入
說明訊息

插入粗體文本 插入斜體文本 插入下劃線 置中對齊 插入超級連結 插入信件位址 插入圖像 插入 flash 插入代碼 插入引言 插入列表
刪除線 直線分隔線 虛線分隔線
    
添加文字底框
內容 [字數檢查]:

表情符號

更多 Smilies
字型大小 |||
溫馨提示:本區開放遊客瀏覽。


文章關鍵字 : [功能說明]
(關鍵字可加強搜索準確性, 如關鍵字多於一組, 請以 , 作分隔, e.g. : 阿笨,shiuh,第一笨)

 關閉 URL 識別 | html 禁用
 關閉 表情符號 | 表情符號 可用
 關閉 Discuz! 代碼 | Discuz! 代碼 可用
使用個人簽名
接收新回覆信件通知
推薦放檔網絡空間

檔案(Torent, zip等)
  1. freedl
  2. multiupload
  3. btghost
  4. 便當狗
  5. mediafire
  6. pillowangel
圖片(JPG, GIF等)
  1. hotimg
  2. tinypic
  3. mousems2
  4. imageshack
  5. imm.io
>>>歡迎推薦好用空間


最新10篇文章回顧
liaokk

 發表於 2007-7-14 06:05 PM

要瞭解BT的基本運作原理,我推薦這篇PDF:
http://oasis.csie.ntu.edu.tw/2006_fall_network/slides/59
這是台大學生的作業,寫成論文型式。翻譯得不錯,極其淺顯易懂。內容比Mr. Friday所寫的透視BT(一)­­── BT的基本運作原理更詳盡。

看完基礎篇,再看Mr. Friday寫的進階篇:透視BT(二)- - ── 網路的頻寬分享與BT的隨機過程
透視BT(三)- - ── 數字會說話, BT有什麼問題?,會比較容易懂。


poliu

 發表於 2007-7-6 03:50 AM

透視BT(一)­­── BT的基本運作原理
Apr 6th, 2007 by Days

Posted by Mr. Friday

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

[poliu 在  2007-7-6 03:51 AM 作了最後編輯]





所在時區為 GMT+8, 現在時間是 2024-11-1 06:54 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.020174 second(s), 6 queries , Qzip disabled