HTTP/IP 協議通俗入門詳解
- 一、什么是 HTTP 協議?
- 1. 基本定義
- 2. HTTP 是怎么工作的?
- 二、HTTP 協議的特點
- 三、HTTPS 是什么?它和 HTTP 有啥區別?
- 1. HTTPS 概述
- 2. HTTP vs HTTPS
- 四、HTTP 的通信過程
- 步驟詳解:
- 五、常見 HTTP 請求方法
- 六、HTTP 狀態碼詳解
- 七、HTTP 1.0 和 HTTP 1.1 的區別
- 八、HTTPS 建立連接過程詳解
- 九、HTTP 會話結束的判斷方式
- 十、IP 地址 vs MAC 地址
- 總結
一、什么是 HTTP 協議?
1. 基本定義
HTTP(HyperText Transfer Protocol)超文本傳輸協議,是一種基于 TCP/IP 協議 的 應用層協議,用于客戶端(瀏覽器)和服務端(Web服務器)之間的數據傳輸。
HTTP 協議讓你能打開網頁、下載圖片、發送表單請求等。比如你打開百度首頁,其實就是瀏覽器向服務器發起了一個 HTTP 請求,服務器返回了網頁代碼,你的瀏覽器再把這些內容顯示出來。
2. HTTP 是怎么工作的?
HTTP 是基于 “請求-響應” 模型:
- 瀏覽器(客戶端)發送一個請求;
- Web 服務器收到請求并返回響應;
- 瀏覽器根據響應展示內容。
二、HTTP 協議的特點
特點 | 說明 |
---|---|
簡單快速 | 請求格式簡單,處理速度快 |
靈活 | 支持多種數據類型(HTML、圖片、JSON等) |
無連接 | 一次請求完成后就斷開連接 |
無狀態 | 每次請求獨立,不記得你是誰(除非用 Cookie、Session) |
默認端口 | HTTP 默認使用 80 端口,HTTPS 默認用 443 端口 |
基于 TCP | 使用可靠的 TCP 三次握手來建立連接 |
支持兩種架構 | B/S(瀏覽器/服務器)、C/S(客戶端/服務器) |
三、HTTPS 是什么?它和 HTTP 有啥區別?
1. HTTPS 概述
HTTPS = HTTP + SSL/TLS加密協議
HTTPS 用于保障傳輸安全性,防止信息被竊取或篡改。
2. HTTP vs HTTPS
比較項 | HTTP | HTTPS |
---|---|---|
是否加密 | ? 明文傳輸 | ? 加密傳輸 |
安全性 | 差 | 高 |
默認端口 | 80 | 443 |
是否需要證書 | 否 | 是(需要 SSL 證書) |
握手過程 | 直接通信 | 多一步 SSL 握手協商密鑰 |
性能 | 快 | 稍慢(需要加解密) |
成本 | 低 | 高(證書可能要錢) |
四、HTTP 的通信過程
步驟詳解:
-
建立連接
瀏覽器通過 TCP 協議連接服務器,通常連接的是 80 端口。 -
發送請求
瀏覽器發出 HTTP 請求報文(包含方法、路徑、請求頭等)。 -
服務器響應
服務器返回 HTTP 響應報文(包含狀態碼、內容等)。 -
關閉連接
通信完成后關閉連接(或復用連接)。 -
瀏覽器解析內容
瀏覽器根據 HTML、CSS、JS 渲染最終頁面。
五、常見 HTTP 請求方法
方法 | 用途 |
---|---|
GET | 獲取資源 |
POST | 提交表單或數據 |
PUT | 上傳新資源 |
DELETE | 刪除資源 |
HEAD | 類似 GET,但不返回內容體 |
OPTIONS | 查詢支持的方法 |
六、HTTP 狀態碼詳解
狀態碼 | 含義 | 示例說明 |
---|---|---|
200 OK | 成功 | 頁面正常返回 |
206 Partial Content | 成功返回部分內容 | 用于斷點續傳 |
301 Moved Permanently | 永久重定向 | 網址永久更改 |
302 Found | 臨時重定向 | 短時間跳轉到其他頁面 |
304 Not Modified | 內容未修改 | 用于緩存判斷 |
403 Forbidden | 無權限訪問 | 服務器拒絕請求 |
404 Not Found | 頁面不存在 | 常見的“找不到頁面” |
500 Internal Server Error | 服務器錯誤 | 服務端崩了 |
503 Service Unavailable | 服務不可用 | 一般是服務器太忙或維護中 |
七、HTTP 1.0 和 HTTP 1.1 的區別
項目 | HTTP 1.0 | HTTP 1.1 |
---|---|---|
默認連接 | 短連接,每次請求都斷開 | 長連接,支持 Connection: keep-alive |
Host頭支持 | 不支持 | 必須支持(支持虛擬主機) |
緩存機制 | 簡單 | 支持更多控制頭字段 |
錯誤狀態碼 | 少 | 增加了更多狀態碼如 409、410 |
斷點續傳 | 不支持,存在浪費帶寬 | 支持(通過 Range 頭實現) |
管道化請求 | 不支持 | 支持請求流水線(Pipelining) |
八、HTTPS 建立連接過程詳解
- 用戶在瀏覽器地址欄輸入,瀏覽器發起 HTTPS 請求;
- 服務器返回 SSL 證書(含公鑰);
- 瀏覽器驗證證書是否合法(例如由受信任 CA 簽發);
- 瀏覽器生成隨機密鑰,并使用公鑰加密;
- 服務器使用私鑰解密,生成對稱密鑰;
- 后續數據用這個密鑰加密傳輸(對稱加密,效率高)。
graph TDA[瀏覽器發起 HTTPS 請求(Client Hello)] --> B[服務器返回 SSL 證書(含公鑰)]B --> C[瀏覽器驗證證書是否合法]C -->|驗證通過| D[瀏覽器生成隨機對稱密鑰]D --> E[用服務器公鑰加密該密鑰并發送]E --> F[服務器使用私鑰解密獲取對稱密鑰]F --> G[雙方擁有相同的對稱密鑰]G --> H[使用對稱密鑰進行后續數據加密傳輸(如登錄、支付等)]
九、HTTP 會話結束的判斷方式
要判斷 HTTP 會話是否結束,最準確的方法是:
觀察 TCP 是否進行“四次揮手”:
- 客戶端和服務器之間釋放 TCP 連接的標準過程;
- 表示一個 HTTP 會話結束(如果未啟用長連接)。
十、IP 地址 vs MAC 地址
項目 | IP 地址 | MAC 地址 |
---|---|---|
層級 | 網絡層 | 數據鏈路層 |
作用 | 邏輯地址,確定“你在哪個網絡” | 物理地址,確定“你是誰” |
是否唯一 | 可變(動態分配) | 全球唯一(寫死在網卡) |
舉例 | 192.168.1.100 | 3C:52:82:3A:44:1F |
用途 | 路由尋址 | 局域網通信 |
簡單理解:
IP地址像是“郵政編碼+門牌號”,MAC地址像是“身份證號”。
總結
- HTTP 是基礎網絡通信協議,Web 瀏覽器和服務器都依賴它。
- HTTPS 是加密版 HTTP,更安全,但成本更高。
- HTTP 協議本身簡單,但通過狀態碼、請求頭、緩存機制等可以實現強大功能。