HTTP協議是一種什麼協議(HTTP協議的原理)
HTTP,全稱 HyperText Transfer Protocol,即超文字傳輸協議。它是網際網路應用最為廣泛的一種網路協議,我們平時瀏覽網頁的時候就是使用HTTP協議。比如當你在瀏覽器中輸入www.baidu.com訪問百度網站的時候,你會注意到HTTP被自動新增在網頁地址的開頭變為http://www.baidu.com了。這表明你現在正在使用HTTP來獲取這個網頁。HTTP協議是基於TCP協議之上的,是Web瀏覽器和Web伺服器之間的應用層協議。
HTTP由請求和響應構成,是一個標準的客戶端伺服器模型。HTTP協議永遠都是客戶端發起請求,伺服器回送響應。 HTTP是一個無狀態的協議。無狀態是指客戶機(Web瀏覽器)和伺服器之間不需要建立持久的連線,這意味著當一個客戶端向伺服器端發出請求,然後伺服器返回響應(response),連線就被關閉了,在伺服器端不保留連線的有關資訊。HTTP的無狀態特性簡化了伺服器的設計,使伺服器更容易支援大量併發的HTTP請求。每一次請求都是完全獨立的,每個請求包含了處理這個請求所需的完整的資料。HTTP遵循請求(Request)/應答(Response)模型。客戶機(瀏覽器)向伺服器傳送請求,伺服器處理請求並返回適當的應答。所有HTTP連線都被構造成一套請求和應答。
HTTP請求方法
在HTTP通訊中,每個HTTP請求報文都包含一個方法。用以告訴Web服務端需要執行什麼具體的動作,這些動作包括:獲取指定Web頁面、提交內容到伺服器、刪除伺服器上的資原始檔等,這些HTTP請求報文中包含的方法被稱為HTTP請求方法。其中,常用的HTTP請求方法有:
HTTP狀態碼
HTTP狀態碼(HTTP Status Code)是用來表示Web伺服器響應http請求狀態的數字程式碼。每當Web客戶端(瀏覽器)向Web伺服器傳送一個HTTP請求時,Web伺服器都會返回一個包含HTTP狀態碼的資訊頭用以響應瀏覽器的請求。這個程式碼是一個三位數字程式碼,作用是告知Web客戶端此次的請求是否成功,或者是否要採取其他的動作方式。HTTP狀態碼由三個十進位制數字組成,第一個十進位制數字定義了狀態碼的型別,共分為5種型別:
HTTP幾種常見的狀態碼:
HTTP報文
HTTP報文可分為兩種,一種是從Web客戶端發往Web伺服器的HTTP報文,稱為請求報文(Request Message)。另外一種是從Web伺服器發往Web客戶端的報文,稱為響應報文(Response Message)。
HTTP請求報文由四個部分組成:請求行、請求頭部、空行、請求資料。
- 請求行:請求行由請求方法欄位、URL欄位和HTTP協議版本欄位3個欄位組成,它們用空格分隔。比如:GET /data/info.html HTTP/1.1。
- 請求頭部: HTTP的報文頭,報文頭包含若干個屬性,格式為“屬性名:屬性值”,服務端據此獲取客戶端的資訊。與快取相關的規則資訊,均包含在header中。
- 空行:它的作用是通過一個空行,告訴伺服器請求頭部到此為止。
- 請求資料:若方法欄位是GET,則此項為空,沒有資料。若方法欄位是POST,則通常來說此處放置的就是要提交的資料。比如要使用POST方法提交一個表單,其中有user欄位中資料為“admin”, password欄位為123456,那麼這裡的請求資料就是 user=admin&password=123456,使用&來連線各個欄位。
同樣的,HTTP響應報文也由四部分組成:
- 響應行:一般由協議版本、狀態碼及其描述組成。比如 HTTP/1.1 200 OK。
- 響應頭:主要是返回一些伺服器的基本資訊,以及一些Cookie值等。
- 空行:它的作用是通過一個空行,告訴客戶端響應頭部到此為止。
- 響應體:響應的訊息體,請求需要得到的具體資料,可以為任何型別資料,一般網頁瀏覽返回的為html檔案內容。
HTTP協議工作原理
HTTP協議屬於OSI模型中的第七層應用層協議,HTTP協議的主要應用就是WWW服務應用。下面就以WWW服務應用為例介紹HTTP協議的通訊原理。
- 客戶端Web瀏覽器輸入需要訪問的網址如www.baidu.com。
- Web瀏覽器請求DNS伺服器把域名www.baidu.com解析成對應的IP地址。關於DNS解析原理流程可參考《通俗易懂講解使用者訪問網站的基本原理過程》。
- Web瀏覽器將埠號(預設80埠)從訪問地址URI中解析出來。
- Web瀏覽器通過解析後的IP地址及埠號與Web伺服器之間建立一條TCP連線。
- 建立TCP連線後,Web瀏覽器發出讀取檔案(URI中域名後面部分對應的檔案)向Web伺服器傳送一條HTTP請求報文。
- Web伺服器響應並讀取瀏覽器的請求資訊,然後返回一條HTTP響應報文。
- Web伺服器關閉HTTP連線,關閉TCP連線,Web瀏覽器顯示訪問的網站內容到螢幕。