uTorrent
http://www.utorrent.com/
BT
www.bittorrent.com
BitTorrent協議(簡稱BT,俗稱比特洪流、BT下載)是一個網路檔案傳輸協議,它能夠實現點對點檔案分享的技術。比起其他點對點的協議,它更有多點對多點的特性,這個特點簡單的說就是:下載的人越多,速度越快。下載完不馬上關閉BitTorrent軟體,就可以成為種子(擁有完整的檔案者)分享讓其他人下載。
原理簡述
普通的HTTP/FTP下載使用TCP/IP協議,BitTorrent協議是架構於TCP/IP協議之上的一個P2P檔案傳輸協議,處於TCP/IP結構的應用層。 BitTorrent協議本身也包含了很多具體的內容協議和擴展協議,並在不斷擴充中。
根據BitTorrent協議,檔案發佈者會根據要發佈的檔案生成提供一個.torrent檔案,即種子檔案,也簡稱為「種子」。
.torrent檔案本質上是純文字檔案,包含Tracker資訊和檔案資訊兩部分。Tracker資訊主要是BT下載中需要用到的Tracker伺服器的地址和針對Tracker伺服器的設置,檔案資訊是根據對目標檔案的計算生成的,計算結果根據BitTorrent協議內的B編碼規則進行編碼。它的主要原理是需要把提供下載的檔案虛擬分成大小相等的區段,區段大小必須為2k的整數次方(由於是虛擬分段,硬碟上並不產生各個區段檔案),並把每個區段的索引資訊和Hash驗證碼寫入.torrent檔案中;所以,.torrent檔案就是被下載檔案的「索引」。
下載者要下載檔案內容,需要先得到相應的.torrent檔案,然後使用BT客戶端軟體進行下載。
下載時,BT客戶端首先解析.torrent檔案得到Tracker地址,然後連接Tracker伺服器。Tracker伺服器回應下載者的請求,提供下載者其他下載者(包括發佈者)的IP。下載者再連接其他下載者,根據.torrent檔案,兩者分別對方告知自己已經有的區段,然後交換對方沒有的資料。此時不需要其他伺服器參與,分散了單個線路上的資料流量,因此減輕了伺服器負擔。
下載者每得到一個區段,需要算出下載區段的Hash驗證碼與.torrent檔案中的對比,如果一樣則說明區段正確,不一樣則需要重新下載這個區段。這種規定是為了解決下載內容準確性的問題。
一般的HTTP/FTP下載,發佈檔案僅在某個或某幾個伺服器,下載的人太多,伺服器的頻寬很易不勝負荷,變得很慢。而BitTorrent協議下載的特點是,下載的人越多,提供的頻寬也越多,種子也會越來越多,下載速度就越快。
而有些人下載完成後關掉下載任務,提供較少量資料給其他用戶,為盡量避免這種行為,在非官方BitTorrent協議中存在超級種子(super seed)的演算法。這種演算法允許檔案發佈者分幾步發佈檔案,發佈者不需要一次提供檔案所有內容,而是慢慢開放的下載內容的比例,延長下載時間。此時,速度快的人由於未下載完必須提供給他人資料,速度慢的人有更多機會得到資料。
DHT網路
目前,又發展出DHT網路技術,可以在無Tracker的情況下下載。
DHT全稱為分散式雜湊表(Distributed Hash Table),是一種分散式儲存方法。在不需要伺服器的情況下,每個客戶端負責一個小範圍的路由,並負責儲存一小部分資料,從而實現整個DHT網路的定址和儲存。使用支持該技術的BT下載軟體,用戶無需連上Tracker就可以下載,因為軟體會在DHT網路中尋找下載同一檔案的其他用戶並與之通訊,開始下載任務。
有些軟體(如比特精靈)還會自動通過DHT搜索種子資源,構成種子市場。
另外,這裡使用的DHT演算法叫Kademlia(在eMule中也有使用,稱為KAD,具體實現協議有所不同)。
這種技術好處十分明顯,就是大大減輕了Tracker的負擔(甚至不需要)。用戶之間可以更快速建立通訊(特別是與Tracker連接不上的時候)。
BT中相關概念
Tracker:收集下載者資訊的伺服器,並將此資訊提供給其他下載者,使下載者們相互連接起來,傳輸資料。
種子:指一個下載任務中所有檔案都被某下載者完整的下載,此時下載者成為一個種子。發佈者本身發佈的檔案就是原始種子。也指.torrent檔案。
做種:發佈者提供下載任務的全部內容的行為;下載者下載完成後繼續提供給他人下載的行為。