帶你5分鐘看懂HTTP/3
什么是 HTTP3?本文以一種深入淺出的方式,讓你快速了解 HTTP3。
你連 HTTP2 都還沒搞明白,就有人開始談 HTTP3 了,真讓人火大。但 HTTP3 會受到關(guān)注也是有理由的:它速度很快。
1.很久以前
談未來之前,咱們先講講現(xiàn)實。
你了解 HTTP 嗎?這個定義于 1991 年的協(xié)議是用來管理 Web 的。它的全名是超文本傳輸協(xié)議,讓你可以從網(wǎng)頁中獲取資源,網(wǎng)頁數(shù)據(jù)從 Web 服務(wù)器傳輸?shù)侥愕臑g覽器上。它基于較低級別的協(xié)議——TCP,這里是重點——而且它是無狀態(tài)的。這意味著每個請求都是完全獨立的。頁面上顯示的每個 GIF 圖片都在互聯(lián)網(wǎng)上獨立存在,這對這些 GIF 圖片本身來說是好事。但對我們來說,這樣的一個系統(tǒng)是有些支離破碎的。
問題在于每個請求一次只會查找一個文件。每次都要創(chuàng)建一個昂貴的 TCP 連接。想象一下,如果你的頁面上有 10,000 個小技巧,這會是多么沉重的負擔啊。
我知道有很多人喜歡我上一篇文章中制作的圖片,所以為了更好地向大家解釋互聯(lián)網(wǎng)的協(xié)議機制,這里我會再做一張圖。
盡管瀏覽器可以同時發(fā)出六個不同的請求,但是 HTTP 仍然很慢,并且需要很多 TCP 連接。另外,我們開發(fā)人員通常不會在意這一點。我們喜歡在頁面上塞滿各種垃圾。比如說巨大的 jQuery 庫,包含 300 個無用的 CSS 樣式表,結(jié)尾是一個透明的 8 兆大 PNG 圖。
當谷歌發(fā)現(xiàn)我們在互聯(lián)網(wǎng)上到處傾倒垃圾后,他們就開始搞一個稱為 SPDY 的東西了。目的是什么呢?當然是加快互聯(lián)網(wǎng)的速度。
SPDY 是一個規(guī)范,建議繼續(xù)使用 HTTP,但要更改一些規(guī)則。通過壓縮標頭、對請求進行優(yōu)先級排序和多路復用,它將把所有 TCP 請求和連接變成單獨的一個!
具體來說,當你讀取 HTML 時,瀏覽器會查看你在頁面中要詢問的所有內(nèi)容。然后,它可以一次獲取所有內(nèi)容,這樣就可以避免一個文件一個文件地獲取了。
HTTP2 的第一份草案基于 SPDY。HTTP2 很快被廣泛采用,隨后互聯(lián)網(wǎng)上的一切變得快多了。今天,互聯(lián)網(wǎng)上 42.7%的內(nèi)容使用 HTTP2。
2. 關(guān)于 HTTP3
HTTP2 是以 HTTP 為基礎(chǔ)并改動一些規(guī)則的產(chǎn)物。HTTP3 也是如此。換句話說,解釋清楚現(xiàn)狀后,我就可以很容易地講明白未來是什么樣子的。
谷歌是一個極客組織,他們永遠不會停止腳步。SPDY 演變成為 HTTP2 后,他們認為它仍然不夠快。因此,他們開始討論 QUIC 這個項目。這是谷歌開發(fā)的第二項將成為 HTTP 協(xié)議的正式升級的技術(shù)。那么,這個協(xié)議有什么特別之處?
HTTP3 的主要改進在傳輸層上。傳輸層不會再有我前面提到的那些繁重的 TCP 連接了。現(xiàn)在,一切都會走 UDP。
順便說一下,QUIC 的意思是“快速 UDP Internet 連接”。協(xié)議的這種更改將顯著加快連接建立和數(shù)據(jù)傳輸?shù)乃俣取H欢?,雖說 UDP 肯定更快、更簡單,但它不具備 TCP 的可靠性和錯誤處理能力。
TCP 必須進行多次往返,才能以方形且穩(wěn)定的方式建立連接。UDP 不會顧慮那么多,而且它確實可以快速運行,代價是穩(wěn)定性下降和丟包的風險。但是,UDP 能大大減少請求中的延遲。到同一服務(wù)器的重復連接的延遲幾乎為零,因為不需要往返來建立連接。
HTTP3 是 HTTP2 的復用和壓縮,協(xié)議從 TCP 更改為 UDP。然后,谷歌的那些人在協(xié)議中添加了他們做的層,以確保穩(wěn)定性、數(shù)據(jù)包接收順序及安全性。
因此,HTTP3 在保持 QUIC 穩(wěn)定性的同時使用 UDP 來實現(xiàn)高速度,同時又不會犧牲 TLS 的安全性。是的,在 QUIC 中就有 TLS1.3,你可以用它發(fā)起優(yōu)雅的 SSL。這些層的底層機制是下面這樣:
2018 年,QUIC 演變成為 HTTP3?;ヂ?lián)網(wǎng)工程任務(wù)組(Internet Engineerring Task Force)的那幫制定互聯(lián)網(wǎng)協(xié)議的哥們同意了這個提案。這是個好消息,因為對于我們這些急躁的人們來說,互聯(lián)網(wǎng)的速度永遠都不夠快。
3.結(jié)語
HTTP3 代表著充滿魅力的未來,它的 HTTP基礎(chǔ)潛能已經(jīng)被谷歌的那些極客發(fā)揮到極致。在撰寫本文時,只有 4.6%的互聯(lián)網(wǎng)內(nèi)容在使用 HTTP3,但這個數(shù)字在未來幾年中可能會增長許多。本文只是簡單談了談這方面的知識,但如果你想了解更多,網(wǎng)上有很多的文章可供你參考。