面試時很容易遇到的一個問題—— HTTP 1.0/HTTP 1.1/HTTP 2.0/HTTP 3.0的區別,其實這四個版本的發展實際上是一環扣一環的,是逐步完善的,本文希望幫助讀者梳理清楚各個版本之間的區別,并且給出當前各個版本的應用情況,以及總結了兩個記憶口訣,希望對大家有幫助。
文章目錄
- 一、HTTP各版本協議的應用情況
- 二、HTTP 1.0與HTTP 1.1的區別
- 1.連接方式
- 2.Host頭字段
- 3.請求方式
- 4.管道化
- 5.狀態碼
- 6.緩存處理
- 7.斷點續傳
- 記憶口訣
- 三、HTTP 1.1與HTTP 2.0的區別
- 1.頭部壓縮
- 2.傳輸格式
- 3.數據包發送順序(多路復用)
- 4.記憶口訣
- 四、HTTP 2.0與HTTP 3.0的區別
- 1、 傳輸層協議
- 2、 連接建立速度:
- 3、 隊頭堵塞
- 4、 錯誤恢復
- 5、 安全性
- 總結
一、HTTP各版本協議的應用情況
HTTP協議自誕生以來,有一下幾個比較重要的版本:
HTTP/1.0
HTTP/1.1
HTTP/2(也可以叫做HTTP 2.0)
HTTP/3(也可以叫做HTTP 3.0)
其中:
? HTTP/1.1 是目前最廣泛使用的版本。
? HTTP/2 和 HTTP/3 是現代高性能 Web 應用的首選協議,HTTP/3 正在逐步普及。
而HTTP/1.0已經被廢棄了。
二、HTTP 1.0與HTTP 1.1的區別
1.連接方式
HTTP 1.0默認為短連接,每次請求需新建TCP連接(三次握手),響應后立即關閉?。HTTP 1.1默認持久連接,允許復用TCP連接發送多個請求,減少握手開銷?。
2.Host頭字段
HTTP1.0 無強制HOST頭,無法區分同一IP的不同虛擬主機,而HTTP1.1必須包含Host頭,支持虛擬主機技術(如多域名共享服務器)?
3.請求方式
HTTP 1.0?:僅支持GET、HEAD、POST三種方法?
HTTP 1.1?:新增OPTIONS、PUT、DELETE、TRACE、CONNECT方法,功能更豐富?
4.管道化
HTTP 1.0 必須等待響應后再發送新請求?
HTTP 1.1 支持管道化,可連續發送多個請求(但響應需按順序返回)?
5.狀態碼
HTTP 1.1新增了24個錯誤狀態響應碼,如100 Continue 410 Gone
6.緩存處理
?HTTP 1.0?:僅支持Expires和If-Modified-Since,依賴絕對時間?36。
?HTTP 1.1?:新增Cache-Control(如max-age)、ETag,支持更靈活的相對時間緩存策略?
7.斷點續傳
HTTP 1.1增加了Range字段,支持斷點續傳,而HTTP 1.0則沒有
記憶口訣
持久連接省握手,區分節點HOST頭,請求方式更多有,管道連發多請求,狀態緩存續傳牛。
三、HTTP 1.1與HTTP 2.0的區別
1.頭部壓縮
HTTP 1.1?:頭部字段重復傳輸(如Cookie),占用帶寬?。
?HTTP 2.0?:如果你發出了多個請求,并且它們的頭部(header)是相同的,那么 HTTP2 協議會幫你消除同樣的部分。
2.傳輸格式
HTTP 1.1?:基于文本格式解析,兼容性強但效率低?。
?HTTP 2.0?:采用二進制分幀傳輸(二進制幀),解析更快、健壯性更強。?
3.數據包發送順序(多路復用)
HTTP 1.1:單個TCP連接需按順序處理請求,存在隊頭阻塞問題,需建立多個連接并行傳輸?。
HTTP 2.0: HTTP/2 的數據包不是按順序發送的,同?個連接??連續的數據包,可能屬于不同的回應。(對數據包做了標記,標志其屬于哪一個請求,其中規定客戶端發出的數據流編號為奇數,服務器發出的數據流編號為偶數。客戶端還可以指定數據流的優先級,優先級?的請求,服務器就先響應該請求)
4.記憶口訣
二部曲(二:二進制格式傳輸,部:頭部壓縮,曲(序):數據包發送不按順序)
四、HTTP 2.0與HTTP 3.0的區別
這個呢是一環扣一環的 只要記住一個是TCP 一個是UDP 其余的區別都是可以推理出來的,故不需要口訣
1、 傳輸層協議
HTTP 2.0:基于TCP
HTTP 3.0: 基于UDP(并基于QUIC協議來實現可靠連接)
2、 連接建立速度:
HTTP 2.0: 需要TCP三次握手+TLS三次握手,建立速度較慢
HTTP 3.0:只需要QUIC的三次握手( ?0-RTT 或 1-RTT 連接建立?),速度很快
3、 隊頭堵塞
需要說明的是,HTTP 2.0相比于HTTP 1.1,基于多路復用(就是那個數據包的發送順序),已經解決了應用層的隊頭阻塞。
但是由于HTTP 2.0是基于TCP的,所以在傳輸層,若底層 TCP 數據包丟失或延遲,所有通過該連接傳輸的 HTTP/2 流需等待 TCP 重傳,導致?傳輸層隊頭阻塞。
而HTTP 3.0通過改用 QUIC(基于 UDP)徹底規避了傳輸層阻塞?。
4、 錯誤恢復
HTTP 2.0 依賴 TCP 的?重傳機制?,恢復速度受限于 TCP 擁塞控制算法?
HTTP 3.0 QUIC 內置?快速重傳與恢復機制?,通過前向糾錯(FEC)減少丟包影響?
5、 安全性
?HTTP 2.0?:通常依賴 ?HTTPS?(需額外 TLS 握手),但協議本身未強制加密?
?HTTP 3.0?:QUIC ?原生集成 TLS 1.3?,加密為默認且不可關閉,安全性更高?
總結
HTTP協議的迭代始終圍繞?性能優化、效率提升、安全性增強?展開,不同版本的核心區別也需從上述方面進行理解記憶。