帶你5分鐘看懂 HTTP3

語言: CN / TW / HK

你連 HTTP2 都還沒搞明白,就有人開始談 HTTP3 了,真讓人火大。但 HTTP3 會受到關注也是有理由的:它速度很快。

1.很久以前

談未來之前,咱們先講講現實。

你瞭解 HTTP 嗎?這個定義於 1991 年的協議是用來管理 Web 的。它的全名是超文字傳輸協議,讓你可以從網頁中獲取資源,網頁資料從 Web 伺服器傳輸到你的瀏覽器上。它基於較低級別的協議——TCP,這裡是重點——而且它是無狀態的。這意味著每個請求都是完全獨立的。頁面上顯示的每個 GIF 圖片都在網際網路上獨立存在,這對這些 GIF 圖片本身來說是好事。但對我們來說,這樣的一個系統是有些支離破碎的。

問題在於每個請求一次只會查詢一個檔案。每次都要建立一個昂貴的 TCP 連線。想象一下,如果你的頁面上有 10,000 個小技巧,這會是多麼沉重的負擔啊。

我知道有很多人喜歡我上一篇文章中製作的圖片,所以為了更好地向大家解釋網際網路的協議機制,這裡我會再做一張圖。

帶你5分鐘看懂 HTTP3

儘管瀏覽器可以同時發出六個不同的請求,但是 HTTP 仍然很慢,並且需要很多 TCP 連線。另外,我們開發人員通常不會在意這一點。我們喜歡在頁面上塞滿各種垃圾。比如說巨大的 jQuery 庫,包含 300 個無用的 CSS 樣式表,結尾是一個透明的 8 兆大 PNG 圖。

當谷歌發現我們在網際網路上到處傾倒垃圾後,他們就開始搞一個稱為 SPDY 的東西了。目的是什麼呢?當然是加快網際網路的速度。

SPDY 是一個規範,建議繼續使用 HTTP,但要更改一些規則。通過壓縮標頭、對請求進行優先順序排序和多路複用,它將把所有 TCP 請求和連線變成單獨的一個!

具體來說,當你讀取 HTML 時,瀏覽器會檢視你在頁面中要詢問的所有內容。然後,它可以一次獲取所有內容,這樣就可以避免一個檔案一個檔案地獲取了。

HTTP2 的第一份草案基於 SPDY。HTTP2 很快被廣泛採用,隨後網際網路上的一切變得快多了。今天,網際網路上 42.7%的內容使用 HTTP2。

帶你5分鐘看懂 HTTP3

2. 關於 HTTP3

HTTP2 是以 HTTP 為基礎並改動一些規則的產物。HTTP3 也是如此。換句話說,解釋清楚現狀後,我就可以很容易地講明白未來是什麼樣子的。

谷歌是一個極客組織,他們永遠不會停止腳步。SPDY 演變成為 HTTP2 後,他們認為它仍然不夠快。因此,他們開始討論 QUIC 這個專案。這是谷歌開發的第二項將成為 HTTP 協議的正式升級的技術。那麼,這個協議有什麼特別之處?

HTTP3 的主要改進在傳輸層上。傳輸層不會再有我前面提到的那些繁重的 TCP 連線了。現在,一切都會走 UDP。

順便說一下,QUIC 的意思是“快速 UDP Internet 連線”。協議的這種更改將顯著加快連線建立和資料傳輸的速度。然而,雖說 UDP 肯定更快、更簡單,但它不具備 TCP 的可靠性和錯誤處理能力。

TCP 必須進行多次往返,才能以方形且穩定的方式建立連線。UDP 不會顧慮那麼多,而且它確實可以快速執行,代價是穩定性下降和丟包的風險。但是,UDP 能大大減少請求中的延遲。到同一伺服器的重複連線的延遲幾乎為零,因為不需要往返來建立連線。

帶你5分鐘看懂 HTTP3

HTTP3 是 HTTP2 的複用和壓縮,協議從 TCP 更改為 UDP。然後,谷歌的那些人在協議中添加了他們做的層,以確保穩定性、資料包接收順序及安全性。

因此,HTTP3 在保持 QUIC 穩定性的同時使用 UDP 來實現高速度,同時又不會犧牲 TLS 的安全性。是的,在 QUIC 中就有 TLS1.3,你可以用它發起優雅的 SSL。這些層的底層機制是下面這樣:

帶你5分鐘看懂 HTTP3

2018 年,QUIC 演變成為 HTTP3。網際網路工程任務組(Internet Engineerring Task Force)的那幫制定網際網路協議的哥們同意了這個提案。這是個好訊息,因為對於我們這些急躁的人們來說,網際網路的速度永遠都不夠快。

3.結語

HTTP3 代表著充滿魅力的未來,它的 HTTP基礎潛能已經被谷歌的那些極客發揮到極致。在撰寫本文時,只有 4.6%的網際網路內容在使用 HTTP3,但這個數字在未來幾年中可能會增長許多。本文只是簡單談了談這方面的知識,但如果你想了解更多,網上有很多的文章可供你參考。

原文連結:http://suo.im/5yhSj1