Google 的 QUIC 華麗轉(zhuǎn)身成為下一代協(xié)議標(biāo)準(zhǔn): HTTP/3.0
HTTP/2.0 還沒(méi)有普及,HTTP/3.0 標(biāo)準(zhǔn)就要被制定了。
據(jù) IETF 透露,HTTP-over-QUIC 實(shí)驗(yàn)協(xié)議將被重命名為 HTTP/3,并成為 HTTP 協(xié)議的第三個(gè)正式版本。
IETF 是 Internet Engineering Task Force 的縮寫(xiě),意思是互聯(lián)網(wǎng)工程任務(wù)小組,主要負(fù)責(zé)互聯(lián)網(wǎng)標(biāo)準(zhǔn)的開(kāi)發(fā)和推動(dòng)。被他們“欽定”,HTTP-over-QUIC 成為HTTP/3.0 算是沒(méi)跑了。
QUIC
先來(lái)了解一下什么是 QUIC。
QUIC(Quick UDP Internet Connections),是快速 UDP 互聯(lián)網(wǎng)連接的縮寫(xiě),這是一種實(shí)驗(yàn)性的傳輸層協(xié)議,由 Google 開(kāi)發(fā),在 2013 年實(shí)現(xiàn)。
QUIC 是基于 UDP 協(xié)議,它在兩個(gè)端點(diǎn)之間創(chuàng)建連接,且支持多路復(fù)用。在設(shè)計(jì)之初 QUIC 希望能夠提供等同于 SSL/TLS 層級(jí)的安全保障的同時(shí),減少數(shù)據(jù)傳輸及創(chuàng)建連接時(shí)的延遲時(shí)間,雙向控制帶寬,從而達(dá)到更快速的體驗(yàn)。
QUIC 相比現(xiàn)在廣泛應(yīng)用的 HTTP2 + TCP + TLS 協(xié)議有如下的優(yōu)勢(shì):
- 減少 TCP 三次握手及 TLS 握手時(shí)間。
- 改進(jìn)的擁塞控制。
- 避免隊(duì)頭阻塞的多路復(fù)用。
- 連接遷移。
- 前向冗余糾錯(cuò)。
HTTP-over-QUIC 算是 QUIC 協(xié)議的一種應(yīng)用實(shí)現(xiàn),而在 IETF 開(kāi)始標(biāo)準(zhǔn)化該協(xié)議時(shí),也有意將它分為兩層:傳輸和 HTTP 部分。
這個(gè)想法也是想將 QUIC 傳輸?shù)牟糠知?dú)立出來(lái),這樣可以方便的用于其他場(chǎng)景下的數(shù)據(jù)傳輸,而不僅僅為 HTTP 或者其他類 HTTP 的協(xié)議使用。
Google 與 QUIC
Google 一直在對(duì)協(xié)議標(biāo)準(zhǔn)上做努力,早年間提出的 SPDY 協(xié)議,被 IETF 標(biāo)準(zhǔn)化之后推出了類似于 SPDY 的 HTTP/2.0 協(xié)議標(biāo)準(zhǔn),Google 立即宣布放棄對(duì) SPDY 的支持,轉(zhuǎn)而支持 HTTP/2。而 QUIC 也是 Google 提出的一種基于 UDP 的傳輸協(xié)議。
Google 希望 QUIC 能夠慢慢取代 TCP 和 UDP,成為移動(dòng)互聯(lián)網(wǎng)上,二進(jìn)制數(shù)據(jù)傳輸?shù)男聟f(xié)議。通過(guò) Google 的測(cè)試證明,QUIC 更快也更安全。
QUIC 即 HTTP/3.0
QUIC 雖然在 2013 年就被 Google 提出,但是直到 2015 年才被提議作為 IETF 的標(biāo)準(zhǔn)草案,并在一年之后,就是 2016 年 7 月,提出了 HTTP-over-QUIC。
在上個(gè)月的郵件討論中,IETF HTTP 和 QUIC 工作組主席 Mark Nottingham 正式提出將 HTPP-over-QUIC 重命名為 HTTP/3.0。隨后的幾天討論中,此項(xiàng)提議被 IETF 成員接受,并給出了官方認(rèn)可。
自此,HTTP-over-QUIC 正式成為 HTTP/3.0,為 HTTP 協(xié)議的下一個(gè)主要版本。
QUIC 還有多遠(yuǎn)
雖然 Chrome 從 29 版本開(kāi)始就添加了 HTTP-over-QUIC 的支持,并且今年開(kāi)始 Facebook 也開(kāi)始采用這項(xiàng)技術(shù)。
但是這個(gè)在 HTTP/2.0 還不是主流的環(huán)境下,HTTP/3.0 已經(jīng)確定,它就在未來(lái)的某個(gè)地方。
據(jù) W3Techs 統(tǒng)計(jì),截止到 2018 年 11 月,前 1000 萬(wàn)網(wǎng)站在中,有 31.2% 支持了 HTTP/2.0,而 QUIC 只有 1.2%,從趨勢(shì)上看,可以說(shuō)離我們還很遠(yuǎn)。
小結(jié)
HTTP/3.0 是一個(gè)仍在開(kāi)發(fā)中的協(xié)議,計(jì)劃在今年內(nèi)完成,但是可以預(yù)見(jiàn)的,它離普及還很遠(yuǎn)。
很多協(xié)議的設(shè)計(jì)思想是非常值得我們借鑒與學(xué)習(xí)的,對(duì)協(xié)議有興趣的朋友,我找了一篇騰訊團(tuán)隊(duì)的資深研發(fā)工程師羅成寫(xiě)的一篇 QUIC 協(xié)議的原理分析,通俗易懂,有興趣可以點(diǎn)擊“閱讀原文”查看。
參考:https://www.zdnet.com/article/http-over-quic-to-be-renamed-http3
https://daniel.haxx.se/blog/2018/11/11/http-3
https://zhuanlan.zhihu.com/p/32553477
【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)聯(lián)系作者獲取授權(quán)】