5分鐘看懂HTTP3

本文最初發佈於jesuisundev.com網站,經原作者授權由InfoQ中文站翻譯並分享。

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

很久以前

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

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

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

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

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

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

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

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

關於HTTP3

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

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

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

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

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

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

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

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

結語

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

原文鏈接:

https://www.jesuisundev.com/en/understand-http3-in-5-minutes

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章