用wordpress建仿站信陽百度推廣公司電話
毫無疑問,發(fā)展互聯網底層的龐大協議基礎設施是一項艱巨的任務。
HTTP 的下一個主要版本基于 QUIC 協議構建,并有望提供更好的性能和更高的安全性。
以下是 Web 應用程序開發(fā)人員需要了解的內容。
HTTP/3 的前景與風險
HTTP/3 致力于讓互聯網對每個人來說都更安全、更快速、更簡單。如果這些目標聽起來很熟悉,那是因為它們與 HTTP/2 最初的目標相同。
這是一個有趣的故事,但最重要的是 HTTP/3 再次解決了 TCP 和 HTTP 中長期存在的缺陷。
令人驚訝的是,新協議完全繞過了 HTTP/2,并采用 QUIC 協議作為其基礎。
對 HTTP/3 的快速理解是:在 UDP 之上構建 TCP 2.0 并將其稱為 QUIC。然后,在 QUIC 上重建 HTTP/2 并將其稱為 HTTP/3。
如果這聽起來很奇怪,那是因為它確實很奇怪。
首先,大多數部署的硬件和軟件都是為與現有協議對話而設計的。批量重新配置網絡設備以采用新版本的 TCP 是不可行的,理論上這是正確的起點。
這種方法可以解決 HTTP/2 的許多問題,但會留下大量故障設備。相反,我們得到了 HTTP/3。
HTTP/3?規(guī)范
HTTP/3 中有兩個規(guī)范:規(guī)范本身和QUIC 協議。它們共同構成了技術和實踐復雜性的叢林。
從高層次的角度看,將有助于我們理解這項技術及其希望實現的目標。
首先,我們可以將 HTTP/3 的功能分為三大類:
內置加密
多字節(jié)流(多路復用)
連接彈性
讓我們依次看一下每一個。
內置加密
雖然內置加密是一種安全功能,但它也是一種性能增強。這是因為 HTTP/3 中協商加密的方式減少了所需的往返次數。
網絡加密歷史悠久,包括棄用 SSL 轉而使用 TLS??傮w而言,這一舉措是為了實現更好的加密方式和提供更多默認加密。
HTTPS 現在是大多數網絡流量的默認加密方式,而在 HTTP/3 中,我們將完全消除純文本(“http://…”)選項。
HTTPS 仍將用作建立安全連接的機制,但流量將在 HTTP/3 級別加密。換句話說,TLS 將集成到網絡協議中,而不是與其一起工作。
因此,加密將移至傳輸層,而不是應用層。這意味著默認情況下會更安全——甚至 HTTP/3 中的標頭也經過加密——但 CPU 負載也會相應增加。
總的來說,這個想法是,由于加密協商方式的改進,通信將更快,而且由于加密將內置在較低級別,因此通信將更簡單,從而避免了因實現方式多樣化而產生的問題。
除了加密之外,QUIC 還旨在提供集成的 DDoS 保護和“前向”安全性,即使參與者后來泄露秘密,攻擊者也更難以破壞過去的通信。
多字節(jié)流或細粒度復用
如果您熟悉 HTTP/2 的工作原理,您會認為它已經實現了多路復用。事實上,多路復用是 HTTP/2 的主要功能之一。
HTTP/3 只是以一種新的、更好的方式實現了多路復用。具體來說,HTTP/3 旨在解決隊頭阻塞問題(HOL)。
理想情況下,我們會直接在 TCP 中修復此阻塞問題。當我們通過 TCP 運行 HTTP 時,我們可以(并且確實)同時發(fā)送多個不同的文件。這是我們目前的多路復用化身。
當您打開網站時,服務器希望一次發(fā)送盡可能多的文件。這對速度和效率有好處。HTTP/2 允許這樣做,但 TCP 不理解多路復用文件。
對于 TCP 來說,它們都是一大塊。更糟糕的是,如果其中任何一個失敗,它必須重新啟動該流中的所有文件。
HTTP/3 的新協議是 QUIC,它有點像 TCP 2.0。它將細粒度文件的概念構建到流中,以便可以以更細粒度的方式重新啟動它們。更棒的是,它這樣做不會破壞所有現有的 TCP 基礎設施。
連接彈性
我們所說的連接彈性是指當設備在網絡間移動時,有一種機制可以保留客戶端和服務器之間的相同連接。
在 TCP 中,這種連續(xù)性是不可能的,因為該協議只理解 IP 地址和端口號。如果其中任何一個發(fā)生變化(例如當您拿著移動設備從一個網絡走到另一個網絡時),就必須建立全新的連接。這種重新連接會導致可預見的性能下降。
QUIC 協議引入了連接 ID或 CID。出于安全考慮,這些實際上是服務器和客戶端協商的 CID 集。
因此,HTTP/3 連接使用 IP 地址、端口和 CID,即使網絡發(fā)生變化并建立了新的 IP 或端口,它們也能保持連接。這為協議提供了一種對話持久性。
HTTP/3 實現
我提到過,HTTP/3 建立在 QUIC 協議之上,QUIC 協議本質上是 TCP 的新版本。QUIC 是一種具有歷史和持續(xù)發(fā)展的協議,但對于 HTTP/3 而言,您需要知道的是,它在古老的用戶數據報協議(UDP) 上構建了多項功能。
UDP
UDP 是幾乎所有網絡設備和軟件都實現的基本協議。它用于 DNS 查找。它的普遍性和簡單性使其成為最新版本 HTTP 的堅實基礎。
與 TCP 不同,UDP 是無連接的,沒有網絡優(yōu)化邏輯。QUIC 協議建立在 UDP 之上,并添加了這些必要的元素。本質上,我們正在實現一個更好的網絡層,它借鑒了數十年實際互聯網使用的經驗。
快
雖然 UDP 是無連接的,但 QUIC 卻不是。QUIC 使用確認 (ACK) 來建立和維護連接。QUIC 還支持數據包重新傳送。這些功能與 TCP 類似,但進行了改進,以實現我們已經討論過的三個目標:內置加密、減少網絡往返和持久連接。
QUIC 是 HTTP/3 的核心,它根據實際經驗以更高效、更安全的方式重新實現了 TCP 的基本元素(如確認和重新傳送)。UDP 被用作 QUIC 的基礎,因為它是一種完善的協議,為實現提供了最低限度的基準。
QUIC 還被設計為可擴展的,這讓我們避免了目前使用 TCP 時遇到的情況。QUIC 協議使用幀,它封裝了特定的數據報用途,并且可以在將來添加而不會破壞現有用例。
HTTP/3 的現狀和未來
盡管 QUIC 已經在瀏覽器和其他項目中使用,但所有功能、協議和 HTTP/3 規(guī)范本身仍在不斷開發(fā)中。
在可預見的未來,HTTP/1、HTTP/2 和 HTTP/3 將繼續(xù)共存。有消息稱,HTTP/1 仍占網絡流量的近 30%。HTTP/3 將采用類似的請求模型。
目前,HTTP/3 作為一個更高級的網絡層存在,隨著更多參與者的支持,它將得到廣泛使用。HTTP/3 在大規(guī)模部署時將如何兌現其承諾,還有待觀察。
對于大多數在職程序員來說,這一變化是我們生活和工作的世界的一個有趣事實,但它不會直接影響我們編寫的代碼。
例如,我們不會直接構建 QUIC 客戶端。當然,這一變化對于網絡管理員和系統操作員以及任何需要分析和了解網絡流量的人來說更為重要。(事實上,QUIC 的加密性質一直是一些網絡運營商的癥結所在,因為它使識別模式和確定用戶何時濫用網絡變得更加困難。)
HTTP/3 是未來網絡領域的一個重要特征。每個從事網絡開發(fā)的程序員都希望至少從高層次上了解它的工作原理。
請參閱以下資源以了解有關 HTTP/3 及其組件的更多信息:
RFC 9114:HTTP/3 提案的詳細信息和歷史。
RFC 9000:QUIC 提案的詳細信息和歷史。另請參閱此處的QUIC RFC 摘要。
Smashing Magazine 有一系列關于 HTTP/3 的深入介紹,包括性能改進。?