1. HTTP 協定用于用戶端 和伺服器之間通信
2. 通過請求 和響應交換達成通信
用戶端發送的為
請求封包
請求封包
: 請求方法, 請求URI , 協定版本, 可選請求首部字段和内容實體構成。
服務端發送的為
響應封包
: 協定版本, 狀态碼, 解釋狀态碼原因短語, 可選響應首部字段以及主體構成
響應封包
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZuBnLzADNmJDM0ImZ0QTNzMTYyMGO1EjY3YWM3YzYiJzN5gzLcFzN3gDM4UzLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
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 來控制用戶端狀态
薩達
流程:
- 用戶端發送請求
- 服務端接收請求,設定Set-Cookie 來設定Cookie資訊
- 用戶端接收Cookie,每次發送請求攜帶Cookie
- 服務端每次接收Cookie 來判定是否失效,執行接下來的請求
HTTP 封包
HTTP 封包由和
封包首部
組成。
封包主體
HTTP 封包首部組成
請求封包和響應封包首部由以下組成:包含: 請求方法,請求URI 和HTTP版本
- 請求行
包含: 狀态碼, 原因短語, HTTP版本
- 狀态行
包含: 通用首部, 請求首部, 響應首部, 實體首部。
- 首部字段
狀态碼
狀态碼是 當用戶端向服務端發送請求,服務端傳回的一種響應,使用者知道目前處理的情況如何。
狀态碼以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 伺服器處于超負荷和停機