HTTP1.0、1.1和2.0區別

HTTP1.0、1.1和2.0區別

Http原理請點擊閱讀 點擊查看

HTTP 1.0

Http1.0是老的HTTP協議標準,規定了客戶端和服務器只能保持短暫的連接,請求完成後就完畢,每次客戶端請求都需要建立一次TCP連接,請求完就斷開,不保存每次請求的狀態。由於連接和關閉會消耗大量服務器和客戶端資源,嚴重影響了客戶端和服務端的性能。例如加載一個網頁地址,有很多JS和CSS文件,每次請求都建立一次TCP連接,大大的影響了瀏覽器的性能。連接無法複用和head of line blocking(會導致帶寬無法被充分利用,以及後續健康請求被阻塞)這兩個問題深受廣大開發者抱怨。

HTTP 1.1

爲了解決1.0的缺陷。HTTP1.1支持了持久化連接(能夠複用同一個TCP連接),HTTP/1.1的默認模式使用帶流水線的持久連接,減少了建立和關閉連接的消耗和延遲。HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先後順序依次回送響應結果,以保證客戶端能夠區分出每次請求的響應內容,這樣也顯著地減少了整個下載過程所需要的時間。

在http1.1中header字段裏增加了connection字段,可用於請求完成後主動關閉TCP持久連接。客戶端和服務端均可能通過connection=close來控制連接的關閉,也可以用connection=Keep-Alive來表明使用長連接

HTTP 1.1在繼承了HTTP 1.0優點的基礎上,也克服了HTTP 1.0的性能問題。HTTP 1.1通過增加更多的請求頭和響應頭來改進和擴充HTTP 1.0的功能。增加了host請求頭字段來表明需要訪問WEB服務器的哪個站點。
HTTP 1.1提供能range請求頭字段來支持斷點續傳
HTTP 1.1還提供了user-agent來用於身份識別
HTTP 1.1也提供與身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭。

SPDY協議

對HTTP 1.1的優化
1.支持多路複用(降低延遲)
2.支持頭部壓縮
3.請求優先級
4.基於HTTPS的加密協議傳輸
5.服務端推送

HTTP 2.0

當前協議較1.1版本有較大的性能提升,而且新支持了很多功能

二進制格式

HTTP1.x的解析是基於文本。基於文本協議的格式解析存在天然缺陷,文本的表現形式有多樣性,要做到健壯性考慮的場景必然很多,二進制則不同,只認0和1的組合。基於這種考慮HTTP2.0的協議解析決定採用二進制格式,實現方便且健壯。

多路複用

HTTP2.0使用了多路複用的技術,做到同一個連接併發處理多個請求,而且併發請求的數量比HTTP1.1大了好幾個數量級。當然HTTP1.1也可以多建立幾個TCP連接,來支持處理更多併發的請求,但是創建TCP連接本身也是有開銷的。TCP連接有一個預熱和保護的過程,先檢查數據是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對應瞬時併發的連接,服務器的響應就會變慢。所以最好能使用一個建立好的連接,並且這個連接可以支持瞬時併發的請求。

頭部壓縮

HTTP1.x的header帶有大量信息,而且每次都要重複發送,HTTP2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache一份header fields表,既避免了重複header的傳輸,又減小了需要傳輸的大小。

服務端推送

我的網頁有一個sytle.css的請求,在客戶端收到sytle.css數據的同時,服務端會將sytle.js的文件推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從緩存中獲取到,不用再發請求了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章