今天我們主要來學習學習HTTP和FTP
一.HTTP協議
HTTP:HyperText Transfer Protocal,超文本傳輸協議。它是Web的核心。
HTTP協議由兩部分程序實現:一個客戶機程序和一個服務器程序,它們運行在不同的端系統中,通過交換HTTP報文進行會話。
HTTP定義了這些報文的格式,以及客戶機和服務器是如何進行報文交換的,即:Web客戶機是如何向Web服務器請求Web頁面,以
及服務器如何將Web頁面傳送給客戶機。
HTTP是一個無狀態協議(stateless protocal)
(1)服務器向客戶機發送被請求的文件時,並不存儲任何關於該客戶機的狀態信息。
(2)假如某個特定的客戶機在短短的幾秒鐘內兩次請求同一個對象,服務器並不會因爲剛剛爲該用戶提供了該對象就不再做出反應,
而是重新發送該對象,就像該服務器已經完全忘記不久之前所做過的事一樣。
(3)正因爲一個HTTP服務器並不保存關於客戶機的任何信息,所以我們說HTTP是一個無狀態協議。
非持久連接(non-persistent connection)和持久連接(persistentconnection)
(1)在許多因特網應用中,客戶機和服務器進行長時間的通信,其中客戶機發出一系列請求,服務器對每個請求進行響應。
(2)根據不同的應用程序以及應用程序使用的方式,這一系列請求,可以週期性地一個接一個地發出,也可以間斷性地發出。
(3)當這種客戶機/服務器的交互運行於TCP協議之上時,應用程序的研製者需要確定每個請求/響應對,是經一個 單獨的TCP連
接 發送,還是所有的請求及相應的響應經 相同的TCP連接 發送。
(4) 如果每個請求/響應對,都是經一個 單獨的TCP連接 發送,該應用程序被稱爲 使用 非持久連接;如果所有的請求及相應的響
應都經 相同的TCP連接 發送,則該應用程序被稱爲 使用 持久連接。
(5)HTTP既可以使用非持久連接,也可以使用持久連接,默認方式下,HTTP使用持久連接。
非持久連接的缺點:
(1)非持久連接必須爲每一個請求的對象建立和維護一個全新的連接。
對於這樣的連接,在客戶機和服務器都要分配TCP的緩衝區和變量,這給服務器帶來了嚴重的負擔,因爲一臺Web服務器
可能同時服務於數以百計的客戶機請求。
(2)每一個對象的傳輸時延爲兩個RTT(Round-TripTime,往返時間),即一個RTT用於建立TCP,另一個RTT用於請求和接
收一個對象。傳輸時延太大。
在持久連接的情況下,服務器在發送響應後保持該TCP連接打開。
在相同的客戶機和服務器之間的後續請求和響應報文,可通過相同的連接進行傳送。特別是一個完整的Web頁面(如基本的
HTML文件,加上10個圖形),可以用單個持久的TCP連接進行傳送。
更有甚者,位於同一臺服務器的多個Web頁面,在從該服務器發送給同一個客戶機時,可以在單個持久的TCP連接上進行。對
這些對象的請求可一個接一個地發出,而不必等待未決請求的回答,像流水線一樣進行。
一般來說,如果一個連接經過一定時間間隔(一個可配置的超時間隔)仍未被使用,HTTP服務器就關閉該連接。
HTTP的默認模式使用了流水線方式的持久連接。
HTTP報文格式
HTTP報文有兩種:請求報文和響應報文。
二.FTP協議
FTP:File Transfer Protocol,文件傳輸協議。
在典型的FTP會話中,用戶坐在一臺主機(本地主機)前面,向一臺遠程主機上傳文件或從遠程主機下載文件。 用戶通過一個
FTP用戶接口與FTP交互。用戶首先提供遠程主機的主機名,使本地主機的FTP客戶機進程建立一個到遠程主機FTP服務器進程的
TCP連接。
然後,爲使用戶能訪問遠程主機的賬戶,用戶必須提供一個用戶標識和口令,作爲FTP命令的一部分在該TCP連接上傳送。一
旦該服務器向該用戶授權,用戶就能從本地文件系統向遠程文件系統傳送文件,反之亦然。
三、HTTP與FTP的異同點
1. 同:
(1)都是應用層協議;
(2)都運行在TCP上,即都使用TCP(而不是UDP)作爲其支撐的運輸層協議。
2. 異:
(1)HTTP是超文本傳輸協議,是面向網頁的;FTP是文件傳輸協議,是面向文件的。
(1)HTTP協議默認端口:80號端口。FTP協議默認端口:21號端口。
(3)FTP的控制信息是帶外(out-of-band)傳送的,而HTTP的控制信息是帶內(in-band)傳送的。
FTP使用兩個並行的TCP連接來傳輸文件,一個是控制連接(control connection),一個是 數據連接(data connection)。
控制連接用於在兩個主機之間傳輸控制信息,如用戶標識、口令、改變遠程目錄的命令以及“put”和“get”文件的命令。
數據連接用於實際傳輸一個文件。
因爲FTP協議使用一個分離的控制連接,因此稱FTP的控制信息是帶外傳送的。
而HTTP協議是在傳輸文件的TCP連接中發送請求和響應首部行的,因此其控制信息是帶內傳送的。
(4)FTP服務器必須在整個會話期間保留用戶的狀態(state)信息,而HTTP是無狀態的。
FTP服務器必須把特定的用戶賬戶與控制連接聯繫起來,隨着用戶在遠程目錄樹上移動,服務器必須追蹤用戶在遠程目錄樹上
的當前位置。對每個活動着的用戶會話的狀態進行追蹤,可以對FTP會話總數進行限制。
(5)FTP的控制連接是持久連接,數據連接是非持久連接;而HTTP既可以使用非持久連接,也可以使用持久連接,默認方式
下,HTTP使用持久連接。
(6)當用戶主機與遠程主機開始一個FTP會話前,FTP的客戶機(用戶)首先在21號端口上發起一個用於控制的與服務器(遠
程主 機)的TCP連接。FTP的客戶機通過該控制連接,發送用戶的標識和口令,也發送改變遠程目錄的命令。
FTP的PORT(主動式)工作方式:當需要傳送數據時,客戶端在控制連接鏈路上用PORT命令告訴服務器:“我打開了XXXX端口,
你過來連接我”。於是服務器從20端口向客戶端的XXXX端口發送連接請求,建立一條數據連接鏈路來傳送數據。
FTP的PASV(被動式)工作方式:當需要傳送數據時,服務器在控制連接鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,
你過來連接我”。於是客戶端向服務器的XXXX端口發送連接請求,建立一條數據連接鏈路來傳送數據。
如果在同一個會話期間,用戶還需要傳輸另一個文件,FTP則打開另一個數據連接。
因此,FTP的控制連接貫穿了整個用戶會話期間,但是針對會話中的每一次文件傳輸,都需要建立一個新的數據連接。故,控
制連接是持久連接,而數據連接是非持久連接。
看完了別忘了點個贊留個言哈