文件下载协议 HTTP、FTP、P2P
要點:
HTTP與FTP
P2P
無論是 HTTP 的方式,還是 FTP 的方式,都有一個比較大的缺點,就是難以解決單一服務器的帶寬壓力, 因為它們使用的都是傳統的客戶端服務器的方式。
后來,一種創新的、稱為 P2P 的方式流行起來。P2P就是peer-to-peer。資源開始并不集中地存儲在某些設備上,而是分散地存儲在多臺設備上。這些設備我們姑且稱為 peer。
P2P定義
- 下載一個文件可以使用 HTTP 或 FTP,這兩種都是集中下載的方式,而 P2P 則換了一種思路,采取非中心化下載的方式
- P2P 也是有兩種,一種是依賴于 tracker 的,也即元數據集中,文件數據分散;另一種是基于分布式的哈希算法,元數據和文件數據全部分散
-
首先簡述HTTP下載和FTP下載的區別:
我們先要知道,使用Web瀏覽器時,這兩個協議之間的差異幾乎不會對使用的方便性及下載時間產生影響。不過,兩者卻擁有各自不同的結構。
HTTP下載
- HTTP是一種為了將位于全球各個地方的Web服務器中的內容發送給不特定多數用戶而制訂的協議。也就是說,可以把HTTP看作是旨在向不特定多數的用戶“發放”文件的協議。
- HTTP使用于從服務器讀取Web頁面內容。Web瀏覽器下載Web服務器中的HTML文件及圖像文件等,并臨時保存在個人電腦硬盤及內存中以供顯示。
- 使用HTTP下載軟件等內容時的不同之處只是在于是否以Web瀏覽器顯示的方式保存,還是以不顯示的方式保存而已。結構則完全相同。因此,只要指定文件,任何人都可以進行下載。
-
FTP下載
FTP即文件傳輸協議
FTP 采用兩個 TCP 連接來傳輸一個文件。
- 控制連接:服務器以被動的方式,打開眾所周知用于 FTP 的端口 21,客戶端則主動發起連接。該連接將命令從客戶端傳給服務器,并傳回服務器的應答。常用的命令有:list——獲取文件目錄;reter——取一個文件;store——存一個文件。
- Peer-to-peer?是一類允許一組用戶互相連接并直接從用戶硬盤上獲取文件的網絡
- Peer-to-peer網絡是一個運行于個人電腦上的應用,通過網絡在用戶間分享文件。P2P網絡通過連接個人電腦分享文件而不是通過中央服務器
- P2P是一種分布式網絡,網絡的參與者共享他們所擁有的一部分硬件資源(處理能力、存儲能力、網絡連接能力、打印機等),這些共享資源需要由網絡提供服務和內容,能被其它對等節點(peer)直接訪問而無需經過中間實體。在此網絡中的參與者既是資源(服務和內容)提供者(server),又是資源(服務和內容)獲取者(client)
- 數據連接:每當一個文件在客戶端與服務器之間傳輸時,就創建一個數據連接。
-
另一方面,FTP是為了在特定主機之間“傳輸”文件而開發的協議。因此,在FTP通信的起始階段,必須運行通過用戶ID和密碼確認通信對方的認證程序,
FTP下載和HTTP下載的區別之一就在與此。
FTP 的兩種工作模式:
每傳輸一個文件,都要建立一個全新的數據連接。FTP 有兩種工作模式,分別是主動模式(PORT)和被動模式(PASV),這些都是站在 FTP 服務器的角度來說的。
P2P特點
BitTorrent
想要下載一個文件的時候,你只要得到那些已經存在了文件的 peer,并和這些 peer 之間,建立點對點的連接,而不需要到中心服務器上,就可以就近下載文件。
一旦下載了文件,你也就成為 peer 中的一員,你旁邊的那些機器,也可能會選擇從你這里下載文件,所以當你使用 P2P 軟件的時候,例如 BitTorrent,往往能夠看到,既有下載流量,也有上傳的流量,也即你自己也加入了這個 P2P 的網絡,自己從別人那里下載,同時也提供給其他人下載。
可以想象,這種方式,參與的人越多,下載速度越快,一切完美。
種子(.torrent)文件
但是有一個問題,當你想下載一個文件的時候,怎么知道哪些 peer 有這個文件呢? 這就用到種子啦,也即咱們比較熟悉的.torrent 文件。.torrent 文件由兩部分組成,分別是:announce(tracker URL)和文件信息。(tracker谷歌翻譯為跟蹤器)
?文件信息里面有這些內容:
- info 區:這里指定的是該種子有幾個文件、文件有多長、目錄結構,以及目錄和文件的名字
- Name 字段:指定頂層目錄名字
- 每個段的大小:BitTorrent(簡稱 BT)協議把一個文件分成很多個小段,然后分段下載
- 段哈希值:將整個種子中,每個段的 SHA-1 哈希值拼在一起
工作過程:
此時不需要其他服務器參與,并分散了單個線路上的數據流量,因此減輕了服務器的負擔。
這個過程也可以看出,這種方式特別依賴 tracker。tracker 需要收集下載者信息的服務器,并將此信息提供給其他下載者,使下載者們相互連接起來,傳輸數據。
雖然下載的過程是非中心化的,但是加入這個 P2P 網絡的時候,都需要借助 tracker 中心服務器,這個服務器是用來登記有哪些用戶在請求哪些資源。
所以,這種工作方式有一個弊端,一旦 tracker 服務器出現故障或者線路遭到屏蔽,BT 工具就無法正常工作了。
去中心化網絡(DHT)
為了向徹底去中心化邁步前進,后來就有了一種叫作DHT(Distributed Hash Table)的去中心化網絡。
每個加入這個 DHT 網絡的人,都要負責存儲這個網絡里的資源信息和其他成員的聯系信息,相當于所有人一起構成了一個龐大的分布式存儲數據庫。
有一種著名的 DHT 協議,叫Kademlia 協議。這個和區塊鏈的概念一樣,很抽象。
任何一個 BitTorrent 啟動之后,它都有兩個角色。一個是peer,監聽一個 TCP 端口,用來上傳和下載文件,這個角色表明,我這里有某個文件。另一個角色DHT node,監聽一個 UDP 的端口,通過這個角色,這個節點加入了一個 DHT 的網絡。
迅雷離線下載的原理是什么?
答:離線下載,即利用服務器“替”網友的電腦下載的方式。具高速、不用掛機的優點而頗受歡迎。如果用戶要下載一些電影或者游戲資源,往往要長時間掛機,不僅浪費時間而且消耗大量的帶寬。 離線下載其實就是下載工具的服務器代替用戶先行下載,多用于冷門資源。比如,用戶的正常下載最大速度能達到200KB/S,但是某個資源是冷門資源,下載速度只能達到10KB/S,用戶就得下很久,如果用戶使用離線下載技術,就可以讓服務商的服務器代替用戶下載,用戶就可以關掉下載工具或者機器,節約時間和電費。等到離線下好了,用戶再從下載工具的服務器上以200KB/S(理論上會員等級越高越快,但最高速度仍然受限制于你的本身寬帶)的速度下到自己的電腦上。即使對于熱門資源,離線下載也能省卻許多掛機等待的時間,最重要的是能夠騰出電腦寬帶做其他的事情。?
操作過程:(1)用戶通過客戶端或Web界面提交一個下載請求。 (2)公司服務器端接受請求,服務器首先查詢用戶提交的下載鏈接是否被下載過;如果沒有,開啟多線程實施下載(或用迅雷自己特有的P2P方式);如果有,直接把已下載的數據文件(或只是文件的鏈接)放入用戶服務器端的在線空間。 (3)下載完成后,用戶在線登錄到在線空間,取回下載的文件。其間也可以采用迅雷自己的P2P方式,從已下載或正在下載相同文件的用戶那里取得數據。 (4)離線下載多針對冷門資源,或資源少的文件。待服務器端不是替用戶下載完成后,用戶還需要利用下載軟件從服務器上下載文件。相比直接下載,增加了下載資源速度,節約了時間。
簡單來說,就是如果要下載的資源已經存在于迅雷的服務器中,那么直接用P2P的方式從迅雷的服務器中取回。如果下載的資源尚未下載,那么可以將下載任務交由服務器代為完成(委托模式啊,哈哈),由于服務器的帶寬性能等遠勝于普通用戶,所以下載效率更高,最重要的是服務器是365 * 7 * 24小時在線的,可以用時間堆死它。
?
?
?
總結
以上是生活随笔為你收集整理的文件下载协议 HTTP、FTP、P2P的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没想到下一代AI助手,来得这么突然
- 下一篇: Qt学习心得