比特流
出自 MBA智库百科(https://wiki.mbalib.com/)
比特流(BitTorrent)
目錄 |
比特流是一種內容分發協議,由布拉姆·科恩自主開發。它採用高效的軟體分發系統和點對點技術共用大體積文件(如一部電影或電視節目),並使每個用戶像網路重新分配結點那樣提供上傳服務。一般的下載伺服器為每一個發出下載請求的用戶提供下載服務,而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)就是被下載文件的“索引”。
和常規下載文件不一樣的是,當你進行BT下載時,開始鏈接的地址都是.torrent結尾的文件。其實只要下載此文件,在本機運行此文件一樣可以進行BT下載工作。而網上的BT下載鏈接都是由廣大用戶自己發佈提供的,這樣使得下載資料非常廣,不受常規管理人員的限制。
無論何種BT客戶端程式,預設設置都未對下載速度和上傳速度進行限制,這是因為BT軟體會給上傳速度較快的用戶優先提供服務,也就是說上傳速度越快,下載速度也越快,因此如果你使用的是寬頻的話,下載時就不要去限制上傳速度了。
當下載結束後,如果未關閉BT客戶端程式(例如一邊運行BT提供上傳服務,一邊瀏覽網頁、編輯文檔等),這時你將成為一個傳遞聖火的使者,即“種子”(seed)。換句話說,如果一個文件被分成10個部分,但擁有第9部分的人只有一個,即只有一個種子,如果這位用戶由於某種原因斷線或關機,那麼其他用戶就只能下載到90%了,在進行BT下載時是令人最為苦惱的。
下載者要下載文件內容,需要先得到相應的.torrent文件,然後使用BT客戶端軟體進行下載。
下載時,BT客戶端首先解析.torrent文件得到Tracker地址,然後連接Tracker伺服器。Tracker伺服器回應下載者的請求,提供下載者其他下載者(包括發佈者)的IP。下載者再連接其他下載者,根據.torrent文件,兩者分別對方告知自己已經有的塊,然後交換對方沒有的數據。此時不需要其他伺服器參與,分散了單個線路上的數據流量,因此減輕了伺服器負擔。
下載者每得到一個塊,需要算出下載塊的Hash驗證碼與.torrent文件中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個塊。這種規定是為瞭解決下載內容準確性的問題。
一般的HTTP/FTP下載,發佈文件僅在某個或某幾個伺服器,下載的人太多,伺服器的帶寬很易不勝負荷,變得很慢。而BitTorrent協議下載的特點是,下載的人越多,提供的帶寬也越多,種子也會越來越多,下載速度就越快。
而有些人下載完成後關掉下載任務,提供較少量數據給其他用戶,為儘量避免這種行為,在非官方BitTorrent協議中存在超級種子的演算法。這種演算法允許文件發佈者分幾步發佈文件,發佈者不需要一次提供文件所有內容,而是慢慢開放的下載內容的比例,延長下載時間。此時,速度快的人由於未下載完必須提供給他人數據,速度慢的人有更多機會得到數據。