HTTP 2的前世今生

2021-07-30 12:00:24 字數 2849 閱讀 3703

前世】

的前生是

google

開發的基於

tcp的傳輸層協議—spdy。spdy是對http

協議的增強。用以最小化網路延遲,提公升網路速度,優化使用者的網路使用體驗。

spdy

並不用於取代

,它只是修改了

的請求與應答在網路上傳輸的方式;這意味著只需增加乙個

spdy

傳輸層,現有的所有服務端應用均不用做任何修改。

當使用spdy

的方式傳輸,

請求會被處理、標記簡化和壓縮(

壓縮報頭和去掉不必要的頭)。

目前網際網路工程任務組

(ietf

)對spdy

協議進行了標準化,於

2023年5

推出了類似於

spdy

協議的http 2.0

協議標準(簡稱

谷歌因此宣布放棄對

spdy

協議的支援,轉而支援

。谷歌稱,計畫於

2016

年初在chrome

中移除spdy

,並將為

chrome 40

新增http/2

協議支援。

此外,著名的開源

伺服器軟體

nginx

也於2023年9

月移除了對

spdy

的支援,轉而支援

因此,建議新的**不要部署

spdy

,轉為部署

。舊有的

spdy

部署也應盡快轉移至

,以符合瀏覽器對新

標準的支援。

spdy

功能:

新協議的功能包括

1.   

資料流的多路復用:

spdy

允許在乙個連線上無限制併發流。因為請求在乙個通道上,

tcp效率更高:更少的網路連線,發出更少更密集的資料報。

2.    請求優先順序:

客戶端從伺服器端請求它希望的專案數量,並為每個請求分配乙個優先順序。這可以防止在網路通道被非關鍵資源堵塞時,高優先順序的請求被掛起。

報頭壓縮

:spdy

壓縮請求和響應

報頭,從而減少傳輸的資料報數量和位元組數。

具體做法:

·            

spdy

使用tcp

作為傳輸層,在

ssl層上增加乙個

spdy

會話層,以在乙個

tcp連線中實現併發流。

·            

強制使用

ssl,讓

ssl協議在現存的網路設施下有更好的安全性和相容性。

效果: 使用

spdy

在實驗室測試中頁面載入速度比原先快

今生】

是超文字

傳輸協議

2.0,在開放網際網路上

將只用於

跟spdy

仍有不同的地方,主要是以下兩點:

支援明文

傳輸,而

spdy

強制使用

訊息頭的壓縮演算法採用

hpack

,而非spdy

採用的deleft

http/2優勢

現在的web動輒就是幾兆的而且對實時性也要求比較高。為了適應新的需求,http/2加速http以減少http的負荷。另外,http/2對於那些擁有複雜的web站點的組織更有用,特別是當其使用者分布在全球或者使用者網路不好的情況,比如手機使用者。

採用二進位制格式傳輸資料,而非

的文字格式。二進位制格式在協議的解析和優化擴充套件上帶來更多的優勢和可能。(優化

對訊息頭採用

hpack

進行壓縮傳輸,能夠節省訊息頭占用的網路的流量。而

每次請求,都會攜帶大量冗餘頭資訊,浪費了很多頻寬資源。(優化

spdy)

3.   

多路復用,所有的請求都是通過乙個

tcp連線併發完成。

雖然能利用乙個連線完成多次請求,但是多個請求之間是有先後順序的,後面傳送的請求必須等待上乙個請求返回才能傳送響應。這會很容易導致後面的請求被阻塞,而

做到了真正的併發請求。同時,

流還支援優先順序和流量控制。(繼承

spdy)

4.   

server push

:服務端能夠更快的把資源推送給客戶端。例如服務端可以主動把js和

css

檔案推送給客戶端,而不需要客戶端解析

html

再傳送這些請求。當客戶端需要的時候,它已經在客戶端了。(繼承

spdy)

HTTP的前世今生

20世紀90年代初期網際網路絡非常簡陋,計算機的計算能力還比較低,這時候網上的絕大部份資源都是純文字的,這時候的http被定義成0.9版,功能非常有限,它同樣也採用了純文字格式,只能從伺服器上get資源,而且在響應請求之後立即關閉連線。在1993年 1995年之間,基於多 的發展以及各種瀏覽器爭相出...

HTTP 協議的前世今生

http 協議全稱是超文字傳輸協議 hypertext transfer protocol 這裡面需要理解三個地方 超文字 傳輸 協議,下面就從 http 協議的歷史講起。20 世紀 60 年代,美國國防部高等研究計畫署 arpa 建立了 arpa 網,它有四個分布在世界各地的節點,被認為是網際網路...

20200414 http協議的前世今生

http 0.9是第乙個版本的http協議,已過時。它的組成極其簡單,只允許客戶端傳送get這一種請求,且不支援請求頭。由於沒有協議頭,造成了http 0.9協議只支援一種內容,即純文字。不過網頁仍然支援用html語言格式化,同時無法插入。請求與響應支援頭域 響應物件以乙個響應狀態行開始 響應物件不...