TCP/IP的開腸破肚(5)

今天我們主要來學習學習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的控制連接貫穿了整個用戶會話期間,但是針對會話中的每一次文件傳輸,都需要建立一個新的數據連接。故,控

制連接是持久連接,而數據連接是非持久連接。 
 

看完了別忘了點個贊留個言哈


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章