BitTorrent如何成就下一代資料傳輸?
作者丨authpaper
轉載丨www.ipfs.cn(IPFS中國社群)
BitTorrent是一種在對等點之間分發資料和電子檔案的協議,它是由布拉姆·科恩於2001年發明的。
與正常伺服器客戶端下載相比,BitTorrent的最大優勢在於,當相同檔案的多個下載同時發生時,下載對等體將將多個片段彼此上傳,使得檔案源可以支援非常大量的下載,同時僅適度增加其負載。
BitTorrent是傳輸大型檔案最常見的協議之一,例如包含電視節目的數字視訊檔案或包含歌曲的數字音訊檔案。據帕洛阿爾託網路公司(Palo Alto Networks)稱,截至2013年2月,BitTorrent佔到了全球所有頻寬的3.35%,超過了用於檔案共享的6%總頻寬的一半。截至2013年,BitTorrent在任何時候都有1500 - 2700萬併發使用者。
BitTorrent協議可以用來減少伺服器和網路對分散式大檔案的影響。
BitTorrent協議允許使用者加入一個“群”的主機,同時從其他主機上傳/下載檔案,而不是從單個源伺服器下載檔案。該協議可以替代傳統的單源、多映象源技術來分發資料,並且可以在低頻寬的網路上有效工作。想要上傳檔案的使用者首先建立一個小型的torrent描述符檔案,通過傳統方式(web、電子郵件等)分發。
然後,他們通過充當種子的BitTorrent節點使檔案本身可用。那些擁有torrent描述符檔案的人可以將其提供給他們自己的bt節點或對等點,通過連接種子和/或其他對等點來下載它。
正在分發的檔案被分成稱為片段的部分。當每個對等點接收到一個新檔案時,它將成為其他對等點的一個源(該部分),從而減輕原始種子必須將該部分發送給每一個希望複製的計算機或使用者。
使用BitTorrent,分發檔案的任務由想要它的人共享;種子完全有可能只發送檔案本身的一個副本,並最終分發給無限數量的對等點。每個片段都受到torrent描述符中包含的加密雜湊的保護。
這可以確保可以可靠地檢測到碎片的任何修改,從而防止在其他節點上接收到的任何碎片的意外和惡意修改。如果一個節點以torrent描述符的真實副本開始,它可以驗證它接收到的整個檔案的真實性。分散式下載協議通常為系統問題提供冗餘,減少對原始分發伺服器的依賴。
在BitTorrent的原始設計中,每一個torrent檔案都必須包含一個跟蹤伺服器資訊,這樣新的節點就可以從跟蹤器伺服器獲得當前的對等列表。跟蹤器伺服器還幫助協調高效傳輸和重新組裝複製的檔案。
然而,如果跟蹤伺服器壞了,種子很快就會死。自從分散式雜湊表(DHT)方法用於“無跟蹤”種子流以來,BitTorrent跟蹤器在很大程度上變得多餘。然而,他們仍然經常包括在種子,以提高同行發現的速度。
DHT(分散式雜湊表)是一種分散的分散式系統,它提供類似於雜湊表的查詢服務:(鍵,值)對儲存在DHT中,任何參與節點都可以有效地檢索與給定鍵相關聯的值。維護從鍵到值的對映的責任分佈在節點之間,以這樣一種方式,參與者集的更改導致最小程度的中斷。這允許DHT擴充套件到非常大數量的節點,並處理連續的節點到達、離開和失敗。
使用“Trackerless”種子流,新的對等點連線到DHT節點列表。在它有了一個節點之後,新的節點可以使用DHT網路來找到其他節點(直到它更新/種子它的路由表)。在DHT網路中,新的對等點可以使用種子查詢的資訊雜湊值來檢索“無追蹤者”torrent檔案的對等點列表。
與此相反,在傳統的跟蹤器方法中,新對等點需要與跟蹤器進行通訊,以瞭解新增的每個額外對等點。
在最初的設計中,為了加入群並開始連線到檔案的對等點,必須有一個torrent檔案。磁連結更進一步,只包含了已經計算過的特定種子檔案的資訊-雜湊值。
通過磁連結,新的對等點可以查詢DHT網路來獲取torrent檔案的對等點列表,從其中一個下載torrent檔案,然後開始BT程序。