面試必備——HTTP協議的理解

萬維網的內核部分是由三個標準構成的:
(1)統一資源定位符(URL),負責標識萬維網上的各種文檔,並使每個文檔在整個萬維網的範圍內具有唯一的標識符URL。
(2)超文本傳輸協議(HTTP),是一個應用層協議,使用TCP連接進行可靠的傳輸,HTTP是萬維網客戶程序和服務器程序之間交互所必須嚴格遵守的協議。
(3)超文本標記語言(HTML),是一種文檔結構的標記語言,使用一些約定的標記對頁面上的各種信息、格式進行描述。

超文本傳輸協議HTTP

HTTP協議定義了瀏覽器怎樣向萬維網服務器請求萬維網文檔,以及服務器怎樣把文檔傳送給瀏覽器。從層次的角度看,HTTP是面向事務的應用層協議,規定了在瀏覽器與服務器之間的請求和響應的格式和規則,它是萬維網上能夠可靠地交換文件的重要基礎。

HTTP的操作過程

每個萬維網站點都有一個服務器進程,它不斷地監聽TCP的端口(默認80),當監聽到連接請求後便與瀏覽器建立連接。TCP連接建立後,瀏覽器向服務器發送請求獲取某一Web頁面的HTTP請求。服務器受到HTTP請求後,將請求需要的Web信息通過HTTP響應給瀏覽器。瀏覽器再將信息解釋展示給用戶,最後釋放TCP連接。
在這裏插入圖片描述
在瀏覽器和服務器之間的請求和響應的交互,必須按照規定的格式並遵守一定的規則,這些格式和規則就是HTTP。因此HTTP有兩類報文:請求報文和響應報文。

當用戶點擊鼠標訪問某網站後
(1)瀏覽器分析鏈接指向頁面的URL(例如http://tsinghua.edu.cn/chn/index.htm);
(2)瀏覽器向DNS請求解析www.tsinghua.edu.cn的IP地址; (3)域名系統DNS解析出服務器IP地址;
(4)瀏覽器與該服務器建立TCP連接; (5)瀏覽器發出HTTP請求:GET/chn/index.htm;
(6)服務器通過HTTP響應把文件index.htm發給瀏覽器; (7)TCP連接釋放; (8)瀏覽器解釋文件並顯示給用戶。

HTTP協議的特點

HTTP是無狀態的。同一個客戶第二次訪問同一個服務器上的頁面時。服務器的響應與第一次被訪問時的相同,因爲服務器並不記得曾經訪問過的這個客戶,也不記得爲該客戶曾經服務過多少次。這個特性簡化了服務器的設計,使服務器更容易支持大量併發的HTTP請求。在實際應用中,通常使用Cookie加數據庫的方式跟蹤用戶的活動。Cookie是存儲在用戶主機中的文本文件,裏面有一串“識別碼”,用於Web服務識別用戶。Web服務器根據Cookie就能從數據庫中查詢到該用戶的活動記錄,進而執行一些個性化的工作,如根據用戶之前瀏覽過的商品向其推薦新產品等。
HTTP採用TCP作爲運輸層協議,保證了數據的可靠傳輸。HTTP不必考慮數據在傳輸過程中被丟棄後又怎樣被重傳。但是HTTP協議本身是無連接的,雖然HTTP使用了TCP連接,但通信的雙方在交換HTTP報文之前不需要先建立HTTP連接。
HTTP既可以使用非持久連接也可以使用持久連接
對於非持久連接,每一個網頁元素對象的傳輸都需要單獨建立一個TCP連接。如圖所示。第三次握手的報文段中捎帶了客戶對萬維網文檔的請求,請求一個萬維網文檔所需的時間是該文檔的傳輸時間(與文檔大小成正比)加上兩倍往返時間RTT。
在這裏插入圖片描述
持久連接是萬維網服務器在發送響應後仍然保持這條連接,使同一個客戶和服務器可以繼續在這條連接上傳送後續的HTTP請求和響應報文。持久連接又分爲非流水線和流水線兩種方式。對於非流水線方式,客戶在收到前一個響應後才能發出下一個請求。HTTP/1.1的默認模式是使用流水線的持久連接。這種情況下,客戶每遇到一個對象引用就立即發出一個請求,因而客戶可以一個接一個地連續發出對各個引用對象的請求。如果所有的請求和響應都是連續發送的,那麼所有引用到的對象共計經歷一個RTT延遲,而不是像非流水線版本那樣,每個引用都必須有一個RTT延遲。

HTTP的報文結構

HTTP有兩類報文:請求報文從客戶向服務器發送的請求報文;響應報文從服務器到客戶的應答。
在這裏插入圖片描述
在這裏插入圖片描述
HTTP兩種報文都是由三個部分組成,即開始行、首部行、實體主體,從上圖可以看出主要是開始行不同
開始行用於區別是請求報文還是響應報文。在請求報文中的開始行叫請求行,響應報文的開始行叫狀態行。開始行的三個字段之間都以空格分割開,最後回車換行。請求報文的“請求行”有三個內容:方法、請求資源的URL以及HTTP版本。常用的方法如下:

GET:請求讀取由URL所標誌的信息;
HEAD:請求讀取URL所標誌的信息的首部;
POST:給服務器添加信息(如註釋);
CONNECT:用於代理服務器。

首部行用於說明瀏覽器、服務器或報文主體的一些信息。在每個首部行都有首部字段名和它的值,每一行在結束的地方都要有回車和換行。在整個首部結束時,還有一空行將首部行和實體主體分開。
實體主體在請求報文中一般不使用這個字段,響應報文也可能沒有。

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