前言
世界上根本沒有 LSP,又或者,人人都是 LSP。
說起種子,你會想到什麼?

是農民伯伯春天播下,秋天就會收穫果實的東西?還是以.torrent結尾的文件?
如果是前者,那你一定是一個熱愛大自然的人。如果是後者,你一定是一個「熱愛生活」的人。
不過今天我們要聊的不是大自然的那個種子,而是 LSP 們喜聞樂見的這個種子。
P2P 與 BitTorrent 協議
所謂「種子」(或者叫種子文件),其實就是以.torrent結尾的文件,而他之所以叫種子,是因為這個文件里包含了你需要獲取的文件的相關信息。就和自然界中的種子一樣,包含了日後形成一顆果實所需要的最基本的成分。
而這個.torrent後綴其實指的是支持 BitTorrent 協議的文件。BitTorrent 簡稱 BT,俗稱比特流。看到這,想必你已經有些印象了吧,我們常說的 BT 種子和種子其實是一種東西。
那麼這個 BitTorrent 協議是什麼?
不急,在介紹 BitTorrent 之前,先讓我們夢回高中課堂,回想一下以前抄作業的時光。
抄作業的例子

如上圖所示,學霸在寫完作業後,要把作業借給同學抄,但是一次只能借給一個人,且其他人只能抄學霸的作業,那麼如果想要讓學霸在內的 7 個人都寫完作業,取決與學霸寫作業的速度和每個同學抄作業的速度。我們知道,這樣的效率一定是很低下的,所以聰明的學霸想出了第二個辦法。如下圖所示:

學霸的辦法就是,把作業分成幾塊,讓每個人抄不同的部分,比如 A 抄單選題、B 抄多選題、C 抄填空題……然後每個人再把自己抄到的作業和其他人抄到的作業互換,這樣,所有人都可以在規定時間內把所有的作業都抄完了,以此實現效率的提升。
P2P 與文件下載

之所以要先提抄作業這個事情,是因為這兩種方案和下載文件頗為相似。
傳統的文件下載就和上面的第一種方案類似,如上圖所示,客戶端向服務器發送「我要下文件」,服務器便將文件再發給客戶端,這是一個很常見的場景,在這個場景中,客戶端下載文件的速率取決於兩個因素:服務器的上傳帶寬和客戶端的下載帶寬。帶寬是指在單位時間(一般指的是 1 秒鐘)內能傳輸的數據量。
而一旦需要下載的文件數量是多個時,下載的總時間便受到下載數量 N 的限制,即越多的人下載某一個文件時,理論上所需要的下載時間就越長,如下圖所示:

這種用戶體驗顯然是很糟糕的,那麼有沒有什麼好的方法解決這個問題呢?這就要請出我們本期的「天降猛男」——P2P(peer-to-peer)。
這裡的 P2P,和點對點(point-to-point)的協議程序不同,它是用戶群對用戶群(peer-to-peer),當然也不是我們前幾年經常聽見的暴雷的 P2P(互聯網金融點對點借貸平台)。
本文所說的 P2P 是一種架構模式,就和我們之前說過的 C/S(客戶端/服務端)架構類似。
在 P2P 模式中,服務和資源分佈化,資源不集中存儲在某些設備上,而是分散存儲在運行 P2P 程序的設備上,每一個對等方都可以為其他對等方提供服務。
還是拿抄作業這個例子來說,學霸的第二個方案就是一個很典型的 P2P 模式。他將自己的作業分成填空、選擇、單選、多選等部分,然後分別送給 6 個人,這樣當每個人都有自己的一部分副本後,就可以不用再找學霸本人要作業了,直接找其他擁有和自己副本不同的人索取然後互換資源即可。
在互聯網,P2P 模式也有一個非常重要的,乃至影響了所有 LSP 的應用,即 BitTorrent,也就是本文開篇所說的種子。
BitTorrent 協議
維基百科對 BitTorrent 的解釋是:
BitTorrent 協議(簡稱 BT,俗稱比特洪流、BT 下載)是用在對等網絡中文件分享的網絡協議程序。和點對點(point-to-point)的協議程序不同,它是用戶群對用戶群(peer-to-peer)。
BitTorrent 協議是架構於 TCP/IP 協議之上的一個 P2P文件傳輸通信協議,處於 TCP/IP 結構的應用層。
簡而言之就是 BitTorrent 是一個用來傳輸文件的協議,和第二個抄作業案例的特性類似,該協議的特點是,用戶越多,即下載同一文件的人越多,下載該文件的速度越快。且下載後,繼續維持上傳的狀態,就可以「分享」,成為其用戶端節點下載的種子文件(.torrent),同時上傳及下載。
在大多數人感覺中 BitTorrent 與 P2P 成了對等的一組概念,而它也的確將 P2P 技術發展到了近乎完美的地步。
原理
介紹完 BitTorrent 協議後,我們來說說他的原理吧。
其實和學霸將作業分成選擇題、填空題等給其他人抄的道理一樣,BitTorrent 協議也是將需要下載的文件虛擬分成大小相等的塊,這些塊的大小被要求成 2k 的整數次方(由於是虛擬分塊,硬盤上並不產生各個塊文件),並把每個塊的索引信息和 Hash 驗證碼寫入 .torrent 文件(即種子文件,也簡稱為「種子」)中,作為被下載文件的「索引」。 下載者要下載文件內容,需要先得到相應的 .torrent 文件,然後使用 BT 客戶端軟件進行下載。
而.torrent 文件其本質就是一張信息清單,存儲了一些信息,如下圖所示,其中就包括了文件大小、哈希值、tracker 地址等信息。

下載時,BT 客戶端首先解析 .torrent 文件得到 Tracker 地址,然後連接 Tracker 服務器。Tracker 服務器回應下載者的請求,提供下載者其他下載者(包括發佈者)的 IP。或者,BT 客戶端也可解析 .torrent 文件得到 nodes 路由表,然後連接路由表中的有效節點,由網絡節點提供下載者其他下載者的 IP。
下載者再連接其他下載者,根據 .torrent 文件,兩者分別對方告知自己已經有的塊,然後交換對方沒有的數據。此時不需要其他服務器參或者其他網絡節點的參與,分散了單個線路上的數據流量,因此減輕了服務器負擔。
下載者每得到一個塊,需要算出下載塊的 Hash 驗證碼與 .torrent 文件中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個塊。
因此,下載的人越多,提供的帶寬也越多,種子也會越來越多,下載速度就越快。
如下圖所示:

從 BT 客戶端角度考慮,下載原理分為以下幾步:
1.根據 BitTorrent 協議,文件發佈者會根據要發佈的文件生成提供一個 .torrent 文件。客戶端可從 Web 服務器上下載種子文件,並從中得到 Tracker 服務器 URL。2.根據 Tracker URL 與 Tracker 服務器建立連接,並從服務器上得到 Peers 信息。3.根據 Peers 信息與一個 Peer 建立連接,依據 Peer wire 協議完成握手,並從 Peer 端下載數據文件。同時監聽 Peer 的連接,並給 Peer 上傳數據文件。
Tracker 沒了怎麼辦?
從上面的分析中我們得知,想要利用種子下載資源,第一步就是根據種子里的信息獲取到 Tracker 地址,那麼這時候問題就來了,如果運營商掐斷了你和 Tracker 服務器間的連接了怎麼辦?

有兩種解決方案:
PT
第一種是採用一種不會被運營商掐斷的 Tracker 服務器,PT(英語:Private Tracker),即私有種子服務器。他與 BT 最大的不同點為:可進行私密範圍下載。由於是私有的,所以一般的 PT 網站都是採用的邀請制,由已註冊的用戶向自己所信任的人發送邀請,以確保用戶質量。例如紫荊站就是南大人專屬的網絡資源的 PT 站點(需要在連接到校園網的狀態下登錄)。
說個題外話,紫荊花的花語是矢志不渝,而這個網站之所以叫紫荊,是因為開發者曾約定和他的女朋友一起在南大種一朵紫荊花,雖然最後因為學校的原因沒有種成,但意外誕生了紫荊 PT 來紀念他們的愛情。就像紫荊的作者說的,紫荊是衚衕寫給他的領導「紫荊 MM」的一封情書,即「你的心裏,刻着我的名字」。
不說了,這就去吃檸檬。
DHT 網絡

第二種解決方案便是 DHT 網絡了,維基百科對他的解釋是:
DHT 全稱為分佈式哈希表(Distributed Hash Table),是一種分佈式存儲方法。在不需要服務器的情況下,每個客戶端負責一個小範圍的路由,並負責存儲一小部分數據,從而實現整個 DHT 網絡的尋址和存儲。使用支持該技術的 BT 下載軟件,用戶無需連上 Tracker 就可以下載,因為軟件會在 DHT 網絡中尋找下載同一文件的其他用戶並與之通訊,開始下載任務。
不知道上面這種解釋能否理解,我換個說法,大家可能就清楚了。
曾經有一個非常著名的理論:最多通過五個人你就能夠認識世界上任何一個陌生人,即六度分離理論。在 DHT 網絡中,每個節點就跟人一樣,你可以通過你的朋友,或者你朋友的朋友,或者你朋友的朋友的朋友,只需要不斷遞歸即可找到你想要的資源地址。這樣的話,在一個網絡中也就不需要 Tracker 服務器了,又或者說,在這個網絡中,所有的機器都充當了 Tracker 服務器。再回顧開篇說的那句,世界上根本沒有 LSP,又或者,人人都是 LSP。這麼一想,是不是有那味了。

而這也是磁力鏈接的原理。所以其實磁力下載和種子下載的本質都是 P2P 下載,都是讓每個下載者分享資源片段,從而拼湊出一個完整的資源,下載者既是資源的消費者,又是資源的傳播者。他們之間的區別僅僅是尋找其他下載者的方式不同。由於篇幅的原因,本文便不詳細介紹磁力鏈接查找下載者的方式了,有興趣的小夥伴們可以搜索相關的資料學習下。
發展
看到這想必你對 BT 種子已經有了一定的了解了。其實 BT 技術早已涉及我們生活的方方面面了,以在線遊戲為例,有些在線遊戲的在線更新(如魔獸世界)就是採用 BT 的技術。所以當每次有改版時,動輒數百 MB 的更新檔,透過遊戲廠商所提供的更新程序,以 BT 的方式進行下載分流。這為以往的其他種在線遊戲,每次重大改版就必須重新壓制光盤,或是等待單一下載點的下載方式,帶來另一種節省成本的經營模式。
技術是把雙刃劍,利用 BT 傳播非收費性內容的好處有目共睹,但利用 BT 免費發佈著作權內容肯定損害著作權所有者的合法權益,因此是否應因此立法全面禁止 BT 仍然是一個焦點問題。

對於大多數 85 後,90 後來說,第一次接觸 BT 種子想必和一個名為「快播」的播放器是脫不了干係的,我至今仍然記得王欣的那句技術本無罪。其實 Facebook 創立之初就是為了找到好看的女生,BT 的也是靠着他的作者科亨收集了些免費的色情電影才吸引到更多的人來測試他的程序,不得不說,某種程度上,ghs 真的促進了互聯網技術的發展。
最後
以上就是本文的全部內容了,如果你覺得還不錯的話,歡迎點贊關注轉發支持一波,你們的支持是我肝文的最大動力。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/268059.html