HTTP 協議簡介
HTTP 是超文本傳輸協議 (Hyper Text Transfer Protocol)的縮寫,用于 WWW 服務
HTTP的工作原理
HTTP是一個面向事務的客戶服務器協議.盡管 HTTP使用TCP 作為底層傳輸協議,但是HTTP 協議是無狀態的,也就是說,每個事務都是獨立的進行處理.在瀏覽器和服務器之間的請求和響應的交互,必須遵循 HTTP 規定的格式和規則。
1 瀏覽器分析待訪問頁面的 URL 并向本地 DNS 服務器請求 IP 地解析;
2 DNS 服務器解析出該 HTTP 服務器的 IP 地址并將 IP 地址返回給瀏覽器;
3 瀏覽器與 HTTP 服務器建立 TCP 連接,若連接成功,則進入下一步;
4 瀏覽器向 HTTP 服務器發出請求報文 (含 GET 信息),請求訪問服務器的指定頁面;
5 服務器作出響應,將瀏覽器要訪問的頁面發送給瀏覽器,在頁面傳輸過程中,瀏覽器會打開多個端口,與服務器建立多個連接;
6 釋放 TCP 連接;
7 瀏覽器收到頁面并顯示給用戶。
HTTP 報文格式
HTTP 有兩類報文:從客戶到服務器的請求報文和從服務器到客戶的響應報文.
顯示了兩種報文的結構。
請求報文(請求行 首部行[HTTP頭],實體 )
- 請求行
- 方法字段,最常用的方法為 “GET”,表示請求讀取一個萬維網的頁面。常用的方法還有 “HEAD(指讀取頁面的首部)”和“POST(請求接受所附加的信息);
- URL 字段為主機上的文件名,這時因為在建立 TCP 連接時已經有了主機名;
- 版本字段說明所使用的 HTTP 協議的版本,一般為 “HTTP/1.1”。
- 首部行
- 第一個字段等同請求行的第三字段;
- 第二個字段一般為“200”,表示一切正常,狀態碼共有41種,常用的有:301 (網站已轉移),400(服務器無法理解請求報文),404(服務器沒有鎖請求的對象)等;
- 第三個字段時解釋狀態碼的短語。
- 根據具體情況,首部行的行數是可變的。請求首部有 Accept 字段,其值表示瀏覽器,可以接受何種類型的媒體;Accept-language,其值表示瀏覽器使用的語言;User-agent 表明可用的瀏覽器類型。響應首部中有 Date、Server、Content-Type、Content-Length 等字段。在請求首部和響應首部中都有 Connection 字段,其值為 Keep-Alive 或 Close,表示服務器在傳送完所請求的對象后是保持連接或關閉連接
- 實體
- 若請求報文中使用 “GET”方法,首部行后面沒有實體主體.
- 當使用"POST"方法,附加的信息被填寫在實體部分.
- 在相應報文中 ,實體主部分為服務器發給客戶的對象.