天天看點

HTTP- 通信解析

1. HTTP 協定用于用戶端 和伺服器之間通信

2. 通過請求 和響應交換達成通信

用戶端發送的為

請求封包

請求封包

: 請求方法, 請求URI , 協定版本, 可選請求首部字段和内容實體構成。

服務端發送的為

響應封包

響應封包

: 協定版本, 狀态碼, 解釋狀态碼原因短語, 可選響應首部字段以及主體構成
HTTP- 通信解析
HTTP- 通信解析

3. HTTP 無狀态協定

無狀态協定: HTTP協定不對請求和響應之間的通信狀态進行儲存。

優點: 可以更快處理大量事務,確定協定的可伸縮性。

HTTP 要想實作保持狀态,就得依靠

Cookie

4. 通過URI 來定位資源

5. 持久連接配接通信

在HTTP 1.0 中, 每進行一次HTTP通信就要斷開一次TCP連接配接。

假定在通路一個HTML 檔案時,它包括圖檔,音頻.... , 它在請求HTML檔案時,同時會斷開重新連接配接請求圖檔,音頻...檔案,重複循環,知道請求完,造成了不必要得TCP 連接配接消耗。

持久連接配接: 隻要任意一段沒有斷開連接配接,那麼

TCP

就不會斷開連接配接。

優點: 減少了TCP 連接配接開銷,減輕了伺服器的負載。

它還有一個特性就是

管線化

管線化: 在請求多的時候,不會因為堵塞而影響請求加載,它是異步的,不是同步加載請求。

HTTP 1.1 預設是持久連接配接。 HTTP 1.0 沒有标準化。

6. Cookie 狀态管理

Cookie 是用來 解決HTTP 不能記錄狀态而生的,Cookie 是通過在請求封包和響應封包中寫入Cookie 來控制用戶端狀态

薩達

流程:

  1. 用戶端發送請求
  2. 服務端接收請求,設定Set-Cookie 來設定Cookie資訊
  3. 用戶端接收Cookie,每次發送請求攜帶Cookie
  4. 服務端每次接收Cookie 來判定是否失效,執行接下來的請求

HTTP 封包

HTTP 封包由

封包首部

封包主體

組成。

HTTP 封包首部組成

請求封包和響應封包首部由以下組成:
  1. 請求行
包含: 請求方法,請求URI 和HTTP版本
  1. 狀态行
包含: 狀态碼, 原因短語, HTTP版本
  1. 首部字段
包含: 通用首部, 請求首部, 響應首部, 實體首部。

狀态碼

狀态碼是 當用戶端向服務端發送請求,服務端傳回的一種響應,使用者知道目前處理的情況如何。

狀态碼以3位數字和原因短語組成。

狀态碼類别

類别 y原因短語
1xx x資訊性狀态碼 j接收的請求正在處理
2xx 成功狀态碼 請求處理完畢
3xx 重定向狀态碼 需要進行附加操作完成請求
4xx 用戶端錯誤原因狀态碼 伺服器無法處理請求
5xx 伺服器錯誤狀态碼 伺服器處理請求出錯

2xx

  • 200 OK 服務端正常處理了
  • 204 No Content 用戶端發送成功了,服務端不傳回任何資訊
  • 206 Partial Content 用戶端進行範圍請求

3xx

  • 301 Moved Permanently永久重定向
  • 302 Found 臨時重定向
  • 304 Not Modified 用戶端發送請求,服務端沒找到符合資源,不做傳回
  • 307 Temporary Redirect 臨時重定向

4xx

  • 400 Bad Request 封包中存在文法錯誤,格式傳遞不對
  • 401 Unauthorized 請求驗證失敗(使用者驗證失敗)
  • 403 Forbidden 用戶端發起請求,别拒絕(權限授權通路)
  • 404 Not Found 伺服器上無法找到請求資源。

5xx

  • 500 Internal Server Error 伺服器端出現了問題
  • 503 Service Unavailable 伺服器處于超負荷和停機