網絡基礎(二) — HTTP

一、概述

本文爲《圖解HTTP學習筆記》

HTTP 相關概念:

  1. HTTP (HyperText Transfer Protocol): 超文本傳輸協議。
  2. HTTP 是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。
  3. HTTP 是無狀態協議,即每次 HTTP 請求之間都是相互獨立的,服務端不知道客戶端具體的狀態。
  4. HTTP 默認端口號爲80。

HTTP 的版本及其差異

  1. HTTP1.0:未實現默認連接持久化,每次請求 TCP 都需要進行3次握手。
  2. HTTP1.1:默認實現了連接持久化
  3. HTTP2.0:連接的多路複用

二、HTTP 持久連接、管線化

HTTP 早期版本,每次請求前 TCP 要進行三次握手建立連接,請求結束後要進行4次握手結束連接,每次請求都會造成無畏的 TCP 連接的建立和斷開,增加通信量的開銷。

在這裏插入圖片描述

持久連接:
HTTP1.1 默認實現了持久連接,支持單次建立連接後可以支持多次請求,減少了 TCP 重複建立連接的時間損耗,提升了網絡的響應速度。
在這裏插入圖片描述

管線化:
管線化支持多個請求同時發送,無需等待上一個請求結束後纔開始。
在這裏插入圖片描述


三、HTTP請求方法

基於 HTTP1.1

序號 方法 描述
1 GET 請求訪問已被 Uri 識別的資源。
2 HEAD 類似於 GET 請求,但返回的響應報文中沒有主體內容,只有響應頭,該方法用於獲取報文頭部。
3 POST 向服務端提交數據處理的請求,數據被包含在請求體中。
4 PUT 用於傳輸文件
5 DELETE 請求服務器刪除指定文件,與 PUT 相反。
6 CONNECT HTTP/1.1協議中預留給能夠將連接改爲隧道方式的代理服務器。
7 OPTIONS 查詢針對請求的 Uri 指定資源支持的請求方法。
8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。

四、HTTP 報文

1. 報文的結構

HTTP報文: 用於 HTTP 協議交互的信息被稱爲 HTTP 報文。

HTTP報文結構: 分爲報文首部、報文主體。如下圖所示:在這裏插入圖片描述

HTTP報文類型: 請求報文、響應報文。
請求報文:

如何提升傳輸效率?

可以對傳輸的內容進行編碼壓縮。

常見的編碼壓縮方式有:

gzipcompress(UNIX 系統的標準壓縮)、deflate(zlib)identity(不進行編碼)。

2. 響應狀態碼

在這裏插入圖片描述
2XX 成功

狀態碼 描述
200 OK:表示服務端返回的成功
204 No Content:服務端接收成功,且返回的響應無實體部分。

3XX 重定向

狀態碼 描述
301 Move Permanently:資源永久轉移到其它 URI
302 Found:資源臨時性的轉移到其它 URI
303 See Other:請求對應的資源存在着另一個 URI,應使用 GET 方法定向獲取請求資源
304 Not Modified:請求頭若攜帶If-MatchIf-Modified-SinceIf-None-MatchIf-Unmodified-Since 任一頭部字段時,服務器允許訪問資源,否則返回304
307 Temporary Redirect:臨時重定向

4XX 客戶端錯誤

狀態碼 描述
400 Bad Request:請求報文中存在語法錯誤
401 Unauthorized:發送的請求需要有HTTP認證的信息
403 Forbidden:請求資源的訪問被拒絕
404 Not Found:服務端無法找到請求資源

5XX 服務端錯誤

狀態碼 描述
500 Internal Server Error:服務端執行請求時發生錯誤
503 Service Unavilable:服務端暫時無法處理請求(超負荷、或停機)

3. HTTP 首部結構

HTTP 首部包括請求報文的首部和響應報文的首部。

3.1 請求報文結構

請求報文包括:報文首部和報文主體。細分如下圖:
在這裏插入圖片描述

3.2 響應報文結構

響應報文包括:報文首部和報文主體。細分如下圖:
在這裏插入圖片描述

3.3 首部字段根據實際用途分爲4種類型

  1. 通用首部字段: 請求報文和響應報文通用的首部 (如協議版本號)。
  2. 請求首部字段: 客戶端發送報文時專用首部 。
  3. 響應首部字段: 服務器端響應報文時專用首部。
  4. 實體首部字段: 針對請求報文和響應報文實體部分使用的首部。

通用首部字段:
在這裏插入圖片描述

請求首部字段:
在這裏插入圖片描述
響應首部字段:
在這裏插入圖片描述在這裏插入圖片描述

實體首部字段:
在這裏插入圖片描述

3.4 常用的首部字段

  1. Cache-Control: 通常通過指定首部字段 Cache-Control 的指令,來實現緩存機制。
  2. Connetion: 管理持久連接。
  3. Transfer - Encoding: 規定了請求報文主體採用的編碼方式。
  4. Accept - Encoding: 告訴服務端,用戶端可以接收的類型。
  5. Host: 主機名和端口號 (用於區分一個IP映射多臺主機時,無法區分哪臺主機的問題)。
  6. Content - Encoding: 服務器告訴客戶端實體內容的編碼方式。
  7. Content - Length: 服務端回傳實體內容的長度。

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