1. 程式人生 > >http1.0 http1.1 http2.0

http1.0 http1.1 http2.0

http1.0協議

無狀態:藉助COOKIE/SESSION 傳遞身份,狀態等資訊

無連線:每次客戶端和服務端傳送請求都要建立新的連線

隊頭阻塞:下一個請求必須在上一個請求的響應到達之後才能傳送

http1.1

長連線 keep-alive:客戶端和伺服器端的連線保持不斷開

管道化:FIFO 解決了隊頭阻塞,一個請求的傳送不用等到上一個請求的響應返回之後才傳送,客戶端可以同時傳送多個request,但是服務端必須一個一個的響應

快取處理 cache-control:服務端為了遵守fifo的原理(按照資源的重要程度進行排列HTML>CSS,JS,CSS>圖片),如果先後收到requestA和B,A的資源優先順序比B高。requesrA處理10m,requestB處理1m先處理好,就將響應B存放在緩衝區

增加host欄位:可以實現在一臺伺服器的IP和埠建立多個虛擬web站點,訪問的域名server

支援斷點續傳:range(客戶端請求傳位元組的位置)、 content-range(伺服器端傳輸位元組的範圍)、Accept-range:bytes(服務端支援斷點續傳)

http2.0

二進位制協議

http2 客戶端與伺服器端值建立了一個tcp連線,該連線在互動期間一直處於開啟狀態

客戶端與伺服器端的連線是通過流來進行傳遞的  一條訊息包含一個完整的幀序列  

HTTP

  

報頭壓縮,標頭資訊相同的不會重新發

流優化 ,每個流都有一個優先順序,確定該流的處理順序,

伺服器推送,如果伺服器預測客戶端的資源需求,會在請求處理前,將這些資源傳送到客戶端

伺服器會發送一個PUSH_PROMISE幀,但是客戶端可以通過RST_STREAM幀為響應拒絕推送

流控制 ,開啟連線後,客戶端會和服務端互相交換SETTINGS幀來確定流控制視窗的大小,預設值為65kb,可以通過WINDOW_UPDATE幀為流控制設定不同的大小