文件共享系統(tǒng):BitTorrent

歷史

2002年首推,BT軟件BitTorrent,以Python寫成

原理概述

BitTorrent協(xié)議是架構(gòu)于TCP/IP協(xié)議之上的一個(gè)P2P文件傳輸協(xié)議,處于TCP/IP結(jié)構(gòu)的應(yīng)用層。

  根據(jù)BitTorrent協(xié)議,文件發(fā)布者會(huì)根據(jù)要發(fā)布的文件生成提供一個(gè).torrent文件,即種子文件,也簡稱為種子。.torrent文件本質(zhì)上是文本文件,包含Tracker信息和文件信息兩部分。Tracker信息主要是BT下載中需要用到的Tracker服務(wù)器的地址和針對Tracker服務(wù)器的設(shè)置,文件信息是根據(jù)對目標(biāo)文件的計(jì)算生成的,計(jì)算結(jié)果根據(jù)BitTorrent協(xié)議內(nèi)的B編碼規(guī)則進(jìn)行編碼。它的主要原理是需要把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2k的整數(shù)次方(由于是虛擬分塊,硬盤上并不產(chǎn)生各個(gè)塊文件),并把每個(gè)塊的索引信息和Hash驗(yàn)證碼寫入.torrent文件中;所以,.torrent文件就是被下載文件的索引。

  下載者要下載文件內(nèi)容,需要先得到相應(yīng)的.torrent文件,然后使用BT客戶端軟件進(jìn)行下載。

  下載時(shí),BT客戶端首先解析.torrent文件得到Tracker地址,然后連接Tracker服務(wù)器。Tracker服務(wù)器回應(yīng)下載者的請求,提供下載者其他下載者(包括發(fā)布者)的IP。下載者再連接其他下載者,根據(jù).torrent文件,兩者分別告知對方自己已經(jīng)有的塊,然后交換對方?jīng)]有的數(shù)據(jù)。此時(shí)不需要其他服務(wù)器參與,分散了單個(gè)線路上的數(shù)據(jù)流量,因此減輕了服務(wù)器負(fù)擔(dān)。

校驗(yàn))下載者每得到一個(gè)塊,需要算出下載塊的Hash驗(yàn)證碼與.torrent文件中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個(gè)塊。這種規(guī)定是為了解決下載內(nèi)容準(zhǔn)確性的問題。

HTTP/FTP下載的比較

  一般的HTTP/FTP下載,發(fā)布文件僅在某個(gè)或某幾個(gè)服務(wù)器,下載的人太多,服務(wù)器的帶寬很易不勝負(fù)荷,變得很慢。而BitTorrent協(xié)議下載的特點(diǎn)是,下載的人越多,提供的帶寬也越多,種子也會(huì)越來越多,下載速度就越快。

  

技術(shù)框架

發(fā)布內(nèi)容

對等發(fā)布

流水作業(yè)

片斷選擇

1.          嚴(yán)格的優(yōu)先級

2.          最少的優(yōu)先

3.          隨機(jī)的第一個(gè)片斷

4.          最后階段模式

BT軟件

  BT Plus!

  BitBuddy

  BitComet

  BitTornado

  Azureus

  比特精靈

  BitTorrent

  迅雷

  Flashget >1.96

  uTorrent

  電驢(eMule)

  脫兔