【故事】P2P、BT、ED2k、FTP、磁力連結下載到底是什麼鬼?

啟迪雲tuscloud 發佈 2020-04-28T20:32:48+00:00

舉個例子解釋:把DHT 網絡比作一個朋友圈子,當你被 A 帶進這個朋友圈,此刻你就只認識 A 而已但是你的目的是想找普京總統,所以你就問 A 要普京的聯繫方式,但是 A 也沒有普京的聯繫方式, 他介紹了一個俄羅斯朋友 B 給你認識於是你去問 B 要普京的聯繫方式,B 其實也沒有普


1 HTTP/HTTPS 下載

有小夥伴會問,這個協議不是用來瀏覽網頁的時候用的嗎?

其實不然,用來下載文件一樣可以,本質上都是從伺服器拉取資源到本地,不同的是網頁內容被渲染到瀏覽器上,而文件直接放在你的下載目錄。

將文件資源放到伺服器上,然後由伺服器傳送到不同的用戶機器上,稱為 Client-Server Model 簡稱 C/S 模式,或者叫一對多模式,這是一種中心化的下載模式。

缺點很明顯:因為伺服器的上行帶寬(上傳速度)有限,如果同一時刻下載同一文件的用戶太多,會影響到下載速度。

正因如此,大容量文件如電影一般不會使用 HTTP 協議進行下載。

例如一些常見軟體的下載用的就是 HTTP 協議的方式:

右鍵複製得到的下載連結:
http://down.crsky.com/soft/201909/TencentVideo-v10.23.4705.0.zip

2 FTP/SFTP 下載

全稱 File Transfer Protocol,即文件傳輸協議。

這個其實跟 http 一樣,都為中心化的下載模式。不過看名字也知道,這個是比較專業的下載協議,主要區別如下:

  • ftp 一般有身份驗證,http 一般沒有
  • ftp 是壓縮傳輸,http 一般不壓
  • ftp 可以上傳,http 一般不能
  • ftp 是雙 TCP 連接,http 單的

3 BT 下載

BT,即 Bit Torrent 協議:俗稱比特洪流、BT 下載(變態下載??)。採用的 P2P 模式,專門為大容量文件的共享而設計。

弄懂 BT 下載,先來了解 P2P。它全稱 Peer to Peer,意為「對等」:

  1. 它是無中心伺服器的對等網絡系統,而上文說的 C/S 模式是有中心伺服器的中央網絡系統。
  2. 對等網絡的每個節點既是客戶端,也是服務端。所以用戶既可以自己下載文件,也可以上傳文件給別人下載。
  3. 所以它叫用戶群對用戶群( peer-to-peer )模式。用戶越多,下載同一文件的人越多,下載該文件的速度就越快。

注意:這裡跟之前暴雷的 P2P 網貸有相似之處,本質上都是對等網絡的思想,所以人們習慣把這種模式的都叫做 P2P。

這裡再舉個例子充分說明下:為什麼下載同一文件的人越多,下載該文件的速度就越快?

假設現在有 6 台電腦,分別叫一毛,二毛……六毛, 他們互相連接著,組成了一個網絡。

有一天一毛得到一部小電影,其他五個毛都想要,於是一毛就把小電影複印了五份分別給了其他五個毛。

這就是傳統下載。

但是其實還能這樣,一毛先把小電影給二毛,後面三毛也想要。

於是一毛跟二毛分別複印小電影的一半同時給三毛,以此類推,四毛想要小電影,那麼一二三毛就分別複製小電影不同的三分之一給四毛,四毛再把它們合併起來。

等到五毛想要小電影的時候,由於另外四個毛都有小電影了,那麼其下載獲取的速度會更快。

不是有首歌在傳唱它們的故事嗎?

" 啊二毛,你比一毛多一毛 ~ 啊啊,二毛,你比三少一毛~ "

這種去中心化的方式,其好處不言而喻:

  • 速度快。眾人拾柴火焰高。
  • 減輕伺服器壓力。眾人平攤了。

與此同時的壞處就是:盜版泛濫。與有中央伺服器的網絡系統不同,BT 下載節點能遍布整個網際網路,所以資源也是分散的,因此無法進行處理。

一個簡單的 BT 種子包含了文件的名字、大小,分塊後每塊文件的大小、哈希值,以及 Tracker 伺服器的地址。(種子:即 .torrent 文件。)

Tracker,即追蹤伺服器,它對於 BT 下載來說非常重要,通過 Tracker 我們才能找到此資源其他下載者的聯繫方式,它相當於指路人。

當你用下載軟體打開種子,就會開始聯繫種子文件里內置的 Tracker 伺服器,告訴 Tracker 我要下載這個文件,伺服器會記錄下你的 IP,並把其他正在下載或下載完成此資源的人的 IP 返回給你,這樣你們就可以相互成就,在獲取發布者該資源的同時,彼此之間也交換該資源。

4 磁力下載

傳統的 BT 下載由於 Tracker 伺服器中心化的問題,導致被毀滅打擊。那有沒有辦法讓這個所謂的 Tracker 伺服器的功能去中心化呢?

當然有的,那就是DHT網絡技術。

先來看看網上的解釋:

DHT 全稱為分布式哈希表(Distributed Hash Table),是一種分布式存儲方法。在不需要伺服器的情況下,每個客戶端負責一個小範圍的路由,並負責存儲一小部分數據, 從而實現整個 DHT 網絡的尋址和存儲。使用支持該技術的 BT 下載軟體,用戶無需連上 Tracker 就可以下載,因為軟體會在 DHT 網絡中尋找下載同一文件的其他用戶並與之通訊, 開始下載任務。

舉個例子解釋:

  • 把 DHT 網絡比作一個朋友圈子,當你被 A 帶進這個朋友圈,此刻你就只認識 A 而已
  • 但是你的目的是想找普京總統,所以你就問 A 要普京的聯繫方式,但是 A 也沒有普京的聯繫方式, 他介紹了一個俄羅斯朋友 B 給你認識
  • 於是你去問 B 要普京的聯繫方式,B 其實也沒有普京的聯繫方式,但是 B 認識一個莫斯科市長 C 於是你又得到了 C 的聯繫方式,C 把普京的聯繫方式告訴你之後,你就可以寫信給普京了

通過上面的例子我們可以得知,DHT 的作用實際是把所有網絡的所有節點都變成一個小型 Tracker 伺服器,這樣就成功解決了傳統 BT 下載的問題了。

註:

  1. BT 下載和磁力下載,在本質都是 P2P 下載;區別僅僅是尋找其他下載者的方式不同
  2. 磁力連結並不是取代 BT 種子文件,而是在沒有 Tracker 伺服器的情況下, 可以用一小段連結方便的在 DHT 中找到種子文件
磁力連結示例:
magnet:?xt=urn:btih:761185c0724de8db4362941571ea2c1e16ea950b&dn=Love%2C+Simon+%282018%29+%5BWEBRip%5D+%5B1080p%5D+English&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.zer0day.to%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969

5 ED2k 下載

eD2k 連結對應的客戶端,如 eMule 電騾是共享軟體,而 Magnet 磁鏈對應的 BT 軟體則是下載軟體。這讓它們在使用上,有著很多根本性的區別:

  • BT 使用的時候,只要你不下載東西你就不會上傳
  • eMule 電騾不同,比如,開啟 eMule 電騾後,第一件事做的並不是什麼下載,而是設置共享目錄,該目錄中的所有文件,都會實時共享到 eD2k 網絡中。
  • 目錄中共享了的文件都會生成 eD2k 連結,所有人通過相應的 eD2k 連結,都能夠拿到你共享的文件,一旦有人下載相應文件,那麼你的 eMule 客戶端就會上傳數據,換言之,你想下載別人的文件,需要別人開著 eMule 客戶端

由於客戶端對於大部分人來說配置起來十分複雜,加上更多人只想單純的索取,如今使用 eD2k 分享資源的人已經很少了,這裡我們就不再繼續深入了解。

此刻窗外的風正在呼嘯,氣氛逐漸詭異,二毛湊上前去查看,大吃一驚,「不好!兇手不止一個!」.......

我是二毛,一個在大城市漂泊的程序猿。

我的故事未完待續......

關鍵字: