HTTP1和HTTP2的區別


1. Http1.x
缺陷:線程阻塞,在同一時間,同一域名的請求有一定數量限制,超過限制數目的請求會被阻塞。

2. Http1.0(短連接)
缺陷:瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接(TCP連接的新建成本很高,因為需要客戶端和服務器三次握手),服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求;
解決方案:添加頭信息——非標准的Connection字段Connection: keep-alive

3. Http1.1
改進點:

持久連接(與Http1其它版本的最大區別)
引入了持久連接,即TCP連接默認不關閉,可以被多個請求復用,不用聲明Connection: keep-alive(對於同一個域名,大多數瀏覽器允許同時建立6個持久連接)
管道機制
即在同一個TCP連接里面,客戶端可以同時發送多個請求。
分塊傳輸編碼
即服務端每產生一塊數據,就發送一塊,采用”流模式”而取代”緩存模式”。
新增請求方式
PUT:請求服務器存儲一個資源;
DELETE:請求服務器刪除標識的資源;
OPTIONS:請求查詢服務器的性能,或者查詢與資源相關的選項和需求;
TRACE:請求服務器回送收到的請求信息,主要用於測試或診斷;
CONNECT:保留將來使用
缺點:
雖然允許復用TCP連接,但是同一個TCP連接里面,所有的數據通信是按次序進行的。服務器只有處理完一個請求,才會接着處理下一個請求。如果前面的處理特別慢,后面就會有許多請求排隊等着。這將導致“隊頭堵塞”
避免方式:一是減少請求數,二是同時多開持久連接

4. Http/2.0
特點:

采用二進制格式而非文本格式;
完全多路復用,而非有序並阻塞的、只需一個連接即可實現並行;(解決了線頭阻塞的問題,與Http1最重要的區別)
使用報頭壓縮,降低開銷
服務器推送
4.1 二進制協議
HTTP/1.1 版的頭信息肯定是文本(ASCII編碼),數據體可以是文本,也可以是二進制。HTTP/2 則是一個徹底的二進制協議,頭信息和數據體都是二進制,並且統稱為”幀”:頭信息幀和數據幀。
二進制協議解析起來更高效、“線上”更緊湊,更重要的是錯誤更少。

4.2 完全多路復用
HTTP/2 復用TCP連接,在一個連接里,客戶端和瀏覽器都可以同時發送多個請求或回應,而且不用按照順序一一對應,這樣就避免了”隊頭堵塞”。

4.3 報頭壓縮
HTTP 協議是沒有狀態,導致每次請求都必須附上所有信息。所以,請求的很多頭字段都是重復的,比如Cookie,一樣的內容每次請求都必須附帶,這會浪費很多帶寬,也影響速度。
對於相同的頭部,不必再通過請求發送,只需發送一次;
HTTP/2 對這一點做了優化,引入了頭信息壓縮機制;
一方面,頭信息使用gzip或compress壓縮后再發送;
另一方面,客戶端和服務器同時維護一張頭信息表,所有字段都會存入這個表,產生一個索引號,之后就不發送同樣字段了,只需發送索引號。
4.4 服務器推送
HTTP協議通常承載於TCP協議之上,在HTTP和TCP之間添加一個安全協議層(SSL或TSL),這個時候,就成了我們常說的HTTPS.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM