HTTP協定發展曆程
HTTP
超文本傳輸協定是一個用于傳輸超文本文檔的應用層協定,它是為
Web
浏覽器與
Web
伺服器之間的通信而設計的,
HTTP
協定到目前為止全部的版本可以分為
HTTP 0.9
、
HTTP 1.0
HTTP 1.1
HTTP 2.0
HTTP 3.0
,其中現在普遍應用的版本是
HTTP 1.1
版本,正在推進
HTTP 2.0
版本,以及未來的
HTTP 3.0
版本。
HTTP 0.9
HTTP 0.9
也被稱為單行協定,最初版本的
HTTP
協定并沒有版本号,後來它的版本号被定位在
0.9
以區分後來的版本,
HTTP 0.9
極其簡單,請求由單行指令構成,以唯一可用方法
GET
開頭,其後跟目标資源的路徑。
HTTP 0.9
的響應内容并不包含
HTTP
頭,這意味着隻有
HTML
檔案可以傳送,無法傳輸其他類型的檔案,也沒有狀态碼或錯誤代碼,出現異常時一個特殊的包含問題描述資訊的
HTML
檔案将被響應傳回。
特點
- 隻有一個請求行,并沒有
請求頭和請求體。HTTP
- 伺服器沒有傳回頭資訊,隻傳回資料資訊。
- 第三個是傳回的檔案内容是以ASCII 字元流來傳輸的,因為都是HTML 格式的檔案,是以使用ASCII 位元組碼來傳輸是最合适的。
HTTP 1.0
HTTP 1.0
建構了可擴充性,為了滿足傳輸多種類型檔案的需求,為了讓用戶端和伺服器能更深入地交流,
HTTP 1.0
引入了請求頭和響應頭,它們都是以為
Key-Value
形式儲存的,在
HTTP
發送請求時,會帶上請求頭資訊,伺服器傳回資料時,會先傳回響應頭資訊。
- 協定版本資訊會随着每個請求發送,即
被追加到了HTTP 1.0
行。GET
- 引入請求頭,在發起請求時候會通過
請求頭告訴伺服器它期待伺服器傳回什麼類型的檔案、采取什麼形式的壓縮、提供什麼語言的檔案以及檔案的具體編碼。HTTP
- 引入響應頭,伺服器以請求頭中資訊準備資料,并以響應頭的資訊告訴用戶端資料采用何種格式傳回,倘若遇到不支援的格式,隻能傳回伺服器支援的格式,并在響應頭中展現,也就是說最終浏覽器是以響應頭的資訊解析資料。
- 引入狀态碼,狀态碼會在響應開始時發送,使浏覽器能了解請求執行成功或失敗,并相應調整行為。
- 引入了緩存機制,通過狀态碼與
If-Modified-Since
等控制更新或使用本地緩存。Expires
- 引入了
頭,使Content-Type
具備了傳輸除純文字HTTP
檔案以外其他類型文檔的能力。HTML
HTTP 1.1
HTTP 1.1
是标準化的協定,
HTTP 1.1
消除了大量歧義内容并引入了多項改進。
- 緩存處理,
引入了更多的緩存控制政策,例如HTTP 1.1
Entity tag
If-Unmodified-Since
If-Match
等更多可供選擇的緩存頭來控制緩存政策。If-None-Match
- 帶寬優化以及網絡連接配接的使用,在請求頭中引入了
,它允許隻請求資源的某一個部分,即傳回range
狀态碼,這樣友善了開發者自由選擇以便充分利用帶寬和連結,并且可以使用206
和Range
制作斷點續傳功能。Content-Range
- 錯誤通知的管理,在
中新增了HTTP 1.1
個錯誤狀态碼。24
- 增加
請求頭,能夠使不同域名配置在同一個Host
位址的伺服器上。IP
- 支援長連接配接,
支援長連接配接,在一個HTTP 1.1
連接配接上可以傳輸多個TCP
請求和響應,減少了建立和關閉連接配接的消耗和延遲,在HTTP
中預設開啟HTTP 1.1
,一般浏覽器對于同一個域名允許同時建立Connection:keep-alive
個長連結。6
- 增加管線化技術,允許在第一個應答被完全發送之前就發送第二個請求,以改善隊頭阻塞問題,但響應的順序還是會按照請求的順序傳回。
- 支援響應分塊,通過設定
進行分塊響應,允許響應的資料可以分成多個部分,配合服務端盡早釋放緩沖可以獲得更快的響應速度。Transfer-Encoding: chunked
HTTP 2.0
HTTP 2.0
擁有更優異的表現,現網頁愈漸變得的複雜,甚至演變成了獨有的應用,媒體的播放量,增進互動的腳本大小也增加了許多,更多的資料通過
HTTP
請求被傳輸,由此
HTTP 2.0
為網絡效率做了大量的優化。
- 二進制分幀,
是二進制協定而不是文本協定,将所有傳輸的資訊分割為更小的消息和幀,并對它們采用二進制格式的編碼。HTTP 2.0
- 多路複用,并行的請求能在同一個連結中處理,在同一域名下所有通路都是從同一個
連接配接中走,TCP
消息被分解為獨立的幀,服務端根據辨別符和首部将消息重新組裝起來,移除了HTTP
中順序和阻塞的限制。HTTP 1.1
- 壓縮
,header
在一系列請求中常常是相似的,其移除了重複和傳輸重複資料的成本。header
- 服務端推送,伺服器可以主動地向用戶端推送資源,而無需用戶端明确的請求。
HTTP 3.0
HTTP 3.0
目前處于制訂和測試階段,是未來的全新的
HTTP
協定,
HTTP 3.0
協定運作在
QUIC
協定之上,是在
UDP
的基礎上實作了可靠傳輸,權衡傳輸速度與傳輸可靠性并加以優化,使用
UDP
将避免
TCP
的隊頭阻塞問題,并加快網絡傳輸速度,但同樣需要實作可靠傳輸的機制,
HTTP 3.0
不是
HTTP 2.0
的拓展,
HTTP 3.0
将會是一個全新的協定。
每日一題
https://github.com/WindrunnerMax/EveryDay
參考
https://www.cnblogs.com/heluan/p/8620312.html
https://www.lizenghai.com/archives/67621.html
https://juejin.im/post/5ce37660f265da1bb13f05f0
https://www.chainnews.com/zh-hant/articles/401950499827.htm
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP