比特洪流
出自 MBA智库百科(https://wiki.mbalib.com/)
比特洪流(Bit Torrent)
目錄[隱藏] |
比特洪流是指一種內容分發協議,它通過讓用戶充當網路轉發點的角色來提供高效的軟體分發和對於大型文件(比如整部電影和電視節目)點對點的共用。它並不直接向請求資源的用戶發送資源,而是通過由擁有資源的用戶作為分發者向請求資源的用戶發送數據,而後者又可以將自己接收到的資源的部分發送給其他的用戶,直到每個人都完成下載。
該技術使得原始伺服器可以為很多個大型文件請求服務同時又不需要很大的帶寬。根據報告表明,一個用戶可以在幾個小時的時間內下載完一部標準長度的電影。比特洪流的協議被描述成一種“密集、分散和聚合”的文件傳輸協議。它是由一個叫做Bram Cohen的人通過Python開發的,並通過開源許可分發到世界各地。
比特洪流的原理[1]
比特洪流是一個基於P2P技術的互聯網文件分發協議。它將需要分發的文件切分成一個個塊,然後在所有的節點之間傳遞。它充分利用了每一個節點的下載和上傳帶寬,繞開了傳統C/S模式中的伺服器瓶頸問題,因此具有很強的可擴展性,可支持大量用戶同時下載某個文件。
1、下載部署
一個典型的BitTorrent網路由一個中心伺服器Tracker,若幹個數據源節點(seed),以及其它需要下載文件的節點(peer)組成。為了使用BT分發文件,首先要生成一個種子文件(Torrent文件),其中記錄了所要分發的文件的許多元信息,如文件名,文件大小,描述等。同時還需要一臺中心伺服器(Tracker),用來記錄所有正在下載這個文件的節點信息。中心伺服器的信息,如IP地址等,也需要被記錄到種子文件中。下載者通過種子文件找到Tracker,然後得到其它正在下載這個文件的節點信息。圖1給出了一個典型的BitTorrent下載流程圖。由於Tracker是隨機地返回節點鏈表的,因此不同的節點間形成了一個隨機的覆蓋網路。
2、鄰居節點選擇演算法
一個新加入的節點P,首先會去向Tracker註冊,Tracker在所有的節點中隨機地挑選出N個節點(預設的是50個)返回給P,隨後P就同這些節點一一建立起連接。以後,如果有其它節點加入這個網路,那麼Tracker也會將P的信息告訴給它們。預設的,每個節點最多同35個其它的節點保持連接。當鄰居節點的數量小於一定的值(預設為20)時,節點會主動地向Tracker發起請求,要求更多的節點信息。
3、文件塊選擇演算法
對一個下載者來說,在選擇下一個被下載的文件塊時,通常選擇的是它的鄰居節點所擁有的最少的那個文件塊,也就是所謂的“最少優先原則”。這種技術確保了每個下載者都擁有它的鄰居節點最希望得到的那些文件塊,從而一旦有需要,下載就可以開始。這樣也使得每個節點都優先選擇整個系統中最少的那些文件塊下載,而那些系統中相對較多的分塊被放在後面下載,這樣,整個系統就趨向於一種更優的狀態。
4、阻塞演算法
BitTorrent採用分散式的資源分配策略。每個節點從它的鄰居節點處以最快的速度下載所請求的塊,同時,它可以自主地通過阻塞演算法來選擇向哪些節點提供上傳服務。
每隔10秒鐘,節點就會給那些對自己所擁有的文件塊感興趣的節點進行評估,從而決定它向哪些節點傳遞數據(預設的配置是允許同時最多給4個節點發送數據)。根據tit-for-tat演算法,節點會優先選擇那些向自己上傳數據速率最快的節點,同時阻塞所有其它的鄰居節點。為了提高整體性能,BT還採用了一種叫做“Optimistic unchoke"的演算法。也就是除了上述的四個節點之外,它還會在其它的節點中隨機選取一個節點向其傳遞數據。通過這個演算法使得新加入的節點可以立即開始下載,同時也能夠幫助節點找到上傳速率比較好的鄰居節點。
- ↑ 王國忠;孫軍;周軍.《BitTorrent改進方法》[J].信息技術.2009(02)