6 月 6 日,IETF QUIC(Internet Engineering Task Force,互聯(lián)網(wǎng)工程任務(wù)組,簡(jiǎn)稱 IETF)、比利時(shí)的 HTTP 工作組成員 Robin Mark 在 Twitter 上宣布“歷時(shí) 5 年,HTTP/3 終于被標(biāo)準(zhǔn)化為 RFC 9114。將與 RFC 9204(QPACK header 壓縮)和 RFC 9218 (可擴(kuò)展的優(yōu)先級(jí))一起開(kāi)啟 Web 的新篇章!”,這意味著該協(xié)議已經(jīng)進(jìn)入了穩(wěn)定的狀態(tài),而 HTTP/3 是 HTTP 超文本傳輸協(xié)議的第三個(gè)主要版本。
同時(shí) HTTP/2 也更新為新的 RFC 9113 標(biāo)準(zhǔn)。
基于 QUIC 的 HTTP/3
據(jù)官方介紹,HTTP/3 是基于 QUIC 的,那么,QUIC 究竟是什么?
正如 IEFT 在簡(jiǎn)介中寫道:
QUIC 傳輸協(xié)議具有 HTTP 傳輸所需的幾個(gè)特性,例如多路復(fù)用、流量控制、每個(gè)流的流控制和低延遲連接建立。
簡(jiǎn)單來(lái)看,QUIC 是一個(gè)通用的傳輸層網(wǎng)絡(luò)協(xié)議,是由 Google 在 2012 年實(shí)現(xiàn)并部署,最后在 2013 年向公眾公開(kāi)發(fā)布。之所以開(kāi)發(fā) QUIC,Google 的初衷是解決傳輸控制協(xié)議(TCP)需要幾次來(lái)回才能建立連接并開(kāi)始傳輸數(shù)據(jù)的事實(shí)。原有的協(xié)議產(chǎn)生的連接和傳輸延遲時(shí)間較長(zhǎng),帶來(lái)了較差的用戶體驗(yàn)。QUIC 改為使用用戶數(shù)據(jù)報(bào)協(xié)議 (UDP) 來(lái)傳輸流量。UDP 減少了客戶端和服務(wù)器之間的往返次數(shù),因此可以加快傳輸速度,這一點(diǎn)在移動(dòng)網(wǎng)絡(luò)上非常重要。
當(dāng)前,業(yè)界已經(jīng)陸續(xù)有不少公司用上了 QUIC 協(xié)議。其中,谷歌就非常喜歡 QUIC,以至于在 2020 年其將 QUIC 應(yīng)用到了 Chrome 瀏覽器中,并在 Google 服務(wù)器所有的連接中,有一半以上使用了 QUIC。
此外,Cloudflare 在 2018 年也將 QUIC 作為網(wǎng)絡(luò)協(xié)議選項(xiàng)。微軟也非常喜歡 QUIC,它不僅創(chuàng)建了自己的版本,還將其開(kāi)源出來(lái)(https://techcommunity.microsoft.com/t5/networking-blog/msquic-is-open-source/ba-p/1345441)。NGINX 增加了 HTTP/3 支持。
為什么放著大流行的 HTTP/2 不用,而選擇 HTTP/3?
雖然 HTTP/3 作為新一代超文本傳輸協(xié)議,要比第二代更為先進(jìn)一些,但 HTTP/2 在 2015 年才被標(biāo)準(zhǔn)化,且據(jù) Cloudflare 數(shù)據(jù)顯示,HTTP/2 仍然是應(yīng)用最為廣泛的 HTTP 版本,排在第二的 HTTP/3 流行度要比 HTTP/2 差了很多。那么,IETF 為什么如此緊急地推出了 HTTP/3 來(lái)代替?
對(duì)此,HTTP 工作組成員 Robin Mark 專門寫了一篇稿件解釋道,「一開(kāi)始我們并不需要一個(gè)新的 HTTP 版本,而是要讓底層傳輸控制協(xié)議(TCP)實(shí)現(xiàn)升級(jí)」。
其表示,幾十年來(lái),TCP 作為網(wǎng)絡(luò)基石,是互聯(lián)網(wǎng)上使用和部署最廣泛的協(xié)議之一,但是在互聯(lián)網(wǎng)早期就已經(jīng)出現(xiàn)的 TCP 并沒(méi)有真正考慮到最大效率的問(wèn)題。相較之下,新傳輸協(xié)議 QUIC 便被眾人賦予期望。
然而,如果把 QUIC 直接運(yùn)行在 HTTP/2 上有一定難度,因?yàn)槠湓诤芏嗵匦陨吓c TCP 有著很大的不同。于是,HTTP 工作組便在幾個(gè)關(guān)鍵領(lǐng)域進(jìn)行了調(diào)整,使其與 QUIC 兼容。這個(gè)調(diào)整后的版本最終被命名為 HTTP / 3,之所以如此命名,主要原因是出于營(yíng)銷和方便用戶更加清晰地識(shí)別出來(lái)區(qū)別。
簡(jiǎn)單來(lái)看,HTTP/3 本身就是對(duì) HTTP/2 相對(duì)較小的改編,以使其與新的 QUIC 協(xié)議兼容。因此,HTTP/1.1 和 HTTP/2 之間的差異要比 HTTP/2 和 HTTP/3 之間的差異要大得多。
這樣一來(lái),HTTP/3 也被很多人詬病,如 Apache 推遲了將協(xié)議添加到其 Web 服務(wù)器,它認(rèn)為自己的 HTTPD 做得很好。也有部分隱私倡導(dǎo)者擔(dān)心 QUIC,他們發(fā)現(xiàn) QUIC 承諾的速度提升難以捉摸。
不過(guò),無(wú)論如何,HTTP/3 進(jìn)入標(biāo)準(zhǔn)化,也是 HTTP 發(fā)展歷程中重要的一個(gè)里程碑事件。如果你對(duì) HTTP/3 也感興趣,不妨通過(guò)官方介紹了解更多內(nèi)容:https://www.rfc-editor.org/info/rfc9114
參考:
https://www.theregister.com/2022/06/07/http3_rfc_9114_published/
https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/
聯(lián)系客服