當(dāng)前位置:首頁>資源分享>HTTP/3 是 Web 的未來嗎?

HTTP/3 是 Web 的未來嗎?

如果沒有我們的老朋友超文本傳輸??協(xié)議 (HTTP),我們所知道的網(wǎng)絡(luò)就不會(huì)存在。最新的版本 HTTP/3 有望徹底改變我們與網(wǎng)絡(luò)交互的方式。在本文中,我們將深入研究 HTTP/2 和 HTTP/3 之間的差異,研究為什么 TCP 受到 QUIC 的青睞,并探討 HTTP/3 的一些優(yōu)勢(shì)。

什么是 HTTP/3?

在我們深入了解新事物之前,可能需要先了解一些歷史。HTTP 是一種請(qǐng)求-響應(yīng)協(xié)議,這意味著客戶端(通常是 Web 瀏覽器)向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器用請(qǐng)求的信息進(jìn)行響應(yīng)。

HTTP/1.1 是 HTTP 的第一個(gè)標(biāo)準(zhǔn)化版本,發(fā)布于 1997 年。它定義了 Web 通信的基本規(guī)則和標(biāo)準(zhǔn),包括請(qǐng)求-響應(yīng)模型、HTTP 方法(如 GET、POST、PUT 和 DELETE)、和 HTTP 標(biāo)頭。HTTP/1.1 還引入了持久連接和管道的概念,持久連接允許通過單個(gè)連接發(fā)送多個(gè)請(qǐng)求和響應(yīng),管道允許在第一個(gè)請(qǐng)求得到答復(fù)之前發(fā)送第二個(gè)請(qǐng)求。

HTTP/2 于 2015 年發(fā)布,是 HTTP 的重大修訂,引入了多路復(fù)用,允許通過單個(gè)連接同時(shí)發(fā)送多個(gè)請(qǐng)求和響應(yīng),從而減少建立和關(guān)閉連接的開銷。HTTP/2 還引入了標(biāo)頭壓縮,減少了 HTTP 標(biāo)頭的大小并縮短了頁面加載時(shí)間。

HTTP/2 向后兼容 HTTP/1.1,這意味著客戶端和服務(wù)器可以使用任一標(biāo)準(zhǔn)進(jìn)行通信。HTTP/3 的情況并非如此。它不向后兼容 HTTP/2。為了理解其中的原因,我們必須更深入地研究這些協(xié)議。

HTTP 的結(jié)構(gòu)如何

HTTP/3 是 Web 的未來嗎? - Http3 Introduction

HTTP 可能代表“超文本傳輸??協(xié)議”,但它只是一個(gè)協(xié)議,就像 Voltron 是一個(gè)機(jī)器人一樣。就像五個(gè)獅子機(jī)器人組合在一起組成一個(gè)更大、更強(qiáng)大的機(jī)器人一樣,HTTP 結(jié)合了多種協(xié)議來完成工作。

HTTP 的每個(gè)版本都依賴于協(xié)議的組合,每個(gè)協(xié)議都有不同的職責(zé)。

傳輸層安全協(xié)議

傳輸層安全性 (TLS) 是 HTTP/2 和 HTTP/3 堆棧的一部分,是一種加密協(xié)議,用于通過網(wǎng)絡(luò)提供端到端安全性。應(yīng)該指出的是,TLS 實(shí)際上并不保護(hù)兩端系統(tǒng)上的任何數(shù)據(jù),而是專注于防止數(shù)據(jù)傳輸時(shí)被竊聽或更改。TLS 是安全套接字層 (SSL) 協(xié)議的后繼版本,其最后一個(gè)版本已于 2015 年棄用。等等,這是否意味著我們應(yīng)該將 SSL 證書稱為 TLS 證書?

HTTP/2 使用 TLS 進(jìn)行身份驗(yàn)證、密鑰協(xié)商、會(huì)話恢復(fù)/0-RTT 和加密解密。它仍然完成 HTTP/3 中的大部分工作,但加密/解密除外,這是由 QUIC 處理的。

TCP

傳輸控制協(xié)議 (TCP) 是一種傳輸層協(xié)議,用于確保 IP 網(wǎng)絡(luò)上的可靠通信。它是一種面向連接的協(xié)議,這意味著在發(fā)送數(shù)據(jù)之前,發(fā)送方和接收方之間建立了連接。此連接在整個(gè)通信期間保持不變,并且發(fā)送方和接收方都必須確認(rèn)發(fā)送的數(shù)據(jù)。

TCP 用于確保數(shù)據(jù)以正確的順序可靠地傳送。它使用序列號(hào)來跟蹤發(fā)送的數(shù)據(jù)包,并且可以重新發(fā)送丟失或損壞的數(shù)據(jù)包。TCP還提供流量控制和擁塞控制,這有助于防止網(wǎng)絡(luò)擁塞并確保接收方能夠處理正在發(fā)送的數(shù)據(jù)量。

TCP 是 HTTP/2 的一部分,但不在 HTTP/3 堆棧中。QUIC 處理 TCP 在 HTTP/2 中所做的大部分工作,但端口號(hào)除外。在 HTTP/3 中,這是通過 UDP 完成的。

QUIC

快速 UDP Internet 連接 (QUIC) 是 Google 開發(fā)的傳輸層協(xié)議,旨在取代 TCP 成為用于 Web 流量的主要協(xié)議,其設(shè)計(jì)比 TCP 更高效、更安全。HTTP/3 中的大部分新功能實(shí)際上都?xì)w結(jié)為 QUIC,因?yàn)樗朔薚CP 的限制。

QUIC 使用面向連接的方法,類似于 TCP,但它的設(shè)計(jì)更加輕量級(jí)和高效。它在發(fā)送數(shù)據(jù)之前在客戶端和服務(wù)器之間建立連接,但它不使用與 TCP 相同的握手協(xié)議。相反,QUIC 使用零往返 (0-RTT) 握手,它結(jié)合了傳輸和加密握手。這減少了建立連接的延遲,使 QUIC 比 TCP 更快。

UDP

用戶數(shù)據(jù)報(bào)協(xié)議 (UDP) 是一種傳輸層協(xié)議,用于在網(wǎng)絡(luò)上的設(shè)備之間發(fā)送數(shù)據(jù)報(bào)(數(shù)據(jù)包)。它是一種無連接協(xié)議,這意味著它在發(fā)送數(shù)據(jù)之前并不在發(fā)送方和接收方之間建立連接。相反,發(fā)送方只是將數(shù)據(jù)報(bào)發(fā)送到接收方,而接收方并不確認(rèn)收到數(shù)據(jù)報(bào)。與 QUIC 一樣,UDP 不存在于 HTTP/2 堆棧中。

TCP 的局限性

TCP 有一些限制,使其不太適合現(xiàn)代網(wǎng)絡(luò),特別是對(duì)于需要低延遲的應(yīng)用程序,例如實(shí)時(shí)視頻流或在線游戲。

TCP 需要大量開銷來維護(hù)連接并確保數(shù)據(jù)的可靠傳輸。該開銷包括確認(rèn)消息、丟失數(shù)據(jù)包的重傳以及擁塞控制機(jī)制。這種開銷會(huì)顯著增加延遲并降低連接的整體性能。

TCP 最大的缺點(diǎn)之一是,在某些方面,它仍然像 1999 年一樣。TCP 基本上加載頁面,就好像它們是單個(gè) HTML 文件一樣,可能帶有一些圖像和一些嵌入的 CSS。另一方面,現(xiàn)代頁面可能包含數(shù)百個(gè)文件。

多年來,人們進(jìn)行了大量更新 TCP 的嘗試,但最終發(fā)現(xiàn)修補(bǔ)是不夠的,這導(dǎo)致了 QUIC 的發(fā)展。

TLS 和 QUIC 在 HTTP/3 中如何工作

HTTP/3 仍然使用 TLS,但它的工作方式與 HTTP/2 略有不同,將其部分職責(zé)轉(zhuǎn)移到 QUIC。下面是 HTTP/3 中 TLS 和 QUIC 的不同角色和職責(zé)的快速細(xì)分。

  1. 加密/解密:TLS 不用于 HTTP/3 中的加密/解密,因?yàn)?QUIC 為通過連接發(fā)送的所有數(shù)據(jù)提供端到端加密。QUIC采用ChaCha20-Poly1305加密算法,比TLS中使用的加密算法更加高效和安全。
  2. 身份驗(yàn)證:HTTP/3 中使用 TLS 進(jìn)行身份驗(yàn)證,提供一種安全的方式來驗(yàn)證服務(wù)器和客戶端的身份。QUIC 不提供身份驗(yàn)證功能。
  3. 密鑰協(xié)商:TLS 用于 HTTP/3 中的密鑰協(xié)商,允許客戶端和服務(wù)器就用于加密的共享密鑰達(dá)成一致。
  4. 會(huì)話恢復(fù)/0-RTT:TLS 用于 HTTP/3 中的會(huì)話恢復(fù)和 0-RTT,允許客戶端和服務(wù)器恢復(fù)先前建立的連接,而無需完全握手。
  5. 擁塞控制:QUIC負(fù)責(zé)HTTP/3中的擁塞控制,使用自己的擁塞控制算法來管理數(shù)據(jù)流并防止網(wǎng)絡(luò)擁塞。
  6. 可靠性:QUIC 負(fù)責(zé) HTTP/3 的可靠性,確保數(shù)據(jù)以正確的順序正確傳送。在 HTTP/2 中,這是由 TCP 處理的。
  7. 連接定向:QUIC 負(fù)責(zé) HTTP/3 中的連接定向,管理連接的建立和拆除。
  8. 連接遷移:QUIC 負(fù)責(zé) HTTP/3 中的連接遷移。HTTP/2 中不存在此功能。

連接遷移的工作原理

連接遷移是 HTTP/3 中的一項(xiàng)功能,支持網(wǎng)絡(luò)更改而無需發(fā)送另一次握手。每個(gè) QUIC 數(shù)據(jù)包標(biāo)頭都附加有一個(gè)未加密的連接標(biāo)識(shí)符 (CID),因此切換到新網(wǎng)絡(luò)不需要重置連接。這允許連接以 TCP 無法完成的方式更改網(wǎng)絡(luò)和 IP 地址。

例如,在 HTTP/3 下,正在進(jìn)行的下載不會(huì)因網(wǎng)絡(luò)變化而中斷。它只是不斷滾動(dòng),在網(wǎng)絡(luò)可用時(shí)平滑地切換網(wǎng)絡(luò)。

QUIC 使用稱為可鏈接性預(yù)防的功能來確保未加密的 CID 無法通過監(jiān)控各種網(wǎng)絡(luò)上的 CID 來實(shí)際跟蹤某人。連接 ID 列表。所有映射到同一連接的都是隨機(jī)生成的,并在會(huì)話開始時(shí)由客戶端和服務(wù)器商定。每次發(fā)生網(wǎng)絡(luò)更改時(shí),都會(huì)使用列表中的新 CID。這可以防止不同的網(wǎng)絡(luò)鏈接到同一用戶。

QPACK 對(duì)比 HPACK

HPACK 用于 HTTP/2 中,旨在壓縮 HTTP/2 請(qǐng)求和響應(yīng)的標(biāo)頭。它的工作原理是結(jié)合使用霍夫曼編碼和基于字典的壓縮來對(duì)標(biāo)頭進(jìn)行編碼。HPACK 使用經(jīng)常使用的標(biāo)頭字段和值的靜態(tài)字典,它還可以為每個(gè)連接創(chuàng)建動(dòng)態(tài)字典。

HTTP/3 中使用的 QPACK 與 HPACK 類似,它也使用霍夫曼編碼和基于字典的壓縮的組合。然而,QPACK 有一些關(guān)鍵的區(qū)別:

  1. QPACK 對(duì)所有連接使用單個(gè)共享字典,而 HPACK 對(duì)每個(gè)連接使用單獨(dú)的字典。
  2. QPACK 通過使用更先進(jìn)的編碼方案(稱為“快速編碼”)來更有效地壓縮標(biāo)頭,該方案可以用單個(gè)字節(jié)對(duì)標(biāo)頭進(jìn)行編碼。
  3. QPACK還支持更先進(jìn)的壓縮技術(shù),例如頭表本身的壓縮,這可以進(jìn)一步減小壓縮頭的大小。
  4. QPACK 的設(shè)計(jì)比 HPACK 更高效、更快,因?yàn)樗褂酶咝У木幋a方案,并且壓縮和解壓縮標(biāo)頭所需的計(jì)算更少。
  5. QPACK 也比 HPACK 更靈活,因?yàn)樗试S對(duì)壓縮設(shè)置進(jìn)行更多自定義,并且可以與不同的傳輸協(xié)議一起使用。

與 HPACK 相比,QPACK 提供更好的壓縮比、更快的壓縮和解壓縮速度以及更大的靈活性。

HTTP/2 與 HTTP/3:性能比較

HTTP/2 和 HTTP/3 都是為了提高 Web 性能而設(shè)計(jì)的,但它們的實(shí)現(xiàn)方式不同。

延遲

由于其零往返 (0-RTT) 握手和更快的連接建立,HTTP/3 的延遲低于 HTTP/2。這意味著 HTTP/3 可以比 HTTP/2 更快地發(fā)送和接收數(shù)據(jù),從而實(shí)現(xiàn)更快的頁面加載時(shí)間。

吞吐量

HTTP/3 具有比 HTTP/2 更高的吞吐量,因?yàn)樗軌蛲ㄟ^單個(gè)連接復(fù)用多個(gè)請(qǐng)求和響應(yīng)。這意味著 HTTP/3 可以同時(shí)發(fā)送和接收多個(gè)請(qǐng)求和響應(yīng),從而提高整體性能。

資源利用

HTTP/3 的設(shè)計(jì)初衷是在資源利用方面比 HTTP/2 更加高效。HTTP/3 使用一種更新且更高效的加密算法,稱為“ChaCha20-Poly1305”,該算法比 HTTP/2 中使用的加密算法更高效。此外,HTTP/3 的多路復(fù)用功能可以更好地利用資源,因?yàn)榭梢酝ㄟ^單個(gè)連接發(fā)送和接收多個(gè)請(qǐng)求和響應(yīng)。

服務(wù)器推送

HTTP/3 支持服務(wù)器推送,這允許服務(wù)器主動(dòng)向客戶端發(fā)送資源,即使客戶端尚未請(qǐng)求它們。這可以加快頁面加載時(shí)間并提高性能。HTTP/2 還支持服務(wù)器推送,但 HTTP/3 的實(shí)現(xiàn)允許客戶端設(shè)置可接受的推送數(shù)量,從而防止浪費(fèi)帶寬。

優(yōu)先級(jí)

與 HTTP/2 相比,HTTP/3 可以更好地確定請(qǐng)求和響應(yīng)的優(yōu)先級(jí)。HTTP/3 的多路復(fù)用功能可以更好地確定請(qǐng)求和響應(yīng)的優(yōu)先級(jí),因?yàn)榭梢允紫劝l(fā)送和接收最重要的請(qǐng)求和響應(yīng)。

總結(jié)

根據(jù) [W3Techs](https://w3techs.com/technologies/details/ce-http3),HTTP/3 的使用率在過去一年中一直在緩慢上升,目前約有 27% 的網(wǎng)站在使用。

TCP 具有 QUIC 所沒有的局限性,包括啟動(dòng)時(shí)間慢、開銷高、可擴(kuò)展性有限以及無法處理大量并發(fā)連接。相比之下,QUIC 的設(shè)計(jì)就是為了解決這些限制。

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
資源分享

ChatGPT 可以構(gòu)建一個(gè)有用的 WordPress 插件嗎?

2023-5-22 11:28:25

網(wǎng)站維護(hù)

WordPress錯(cuò)誤:無法啟用插件,因?yàn)樗鹆艘粋€(gè)致命錯(cuò)誤

2012-11-20 5:44:00

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

柞水县| 盘锦市| 铁力市| 木兰县| 大连市| 米泉市| 迁西县| 寿宁县| 山东省| 平利县| 保德县| 盐源县| 凌源市| 漠河县| 乌海市| 博爱县| 汤原县| 芮城县| 龙州县| 屏山县| 惠州市| 永春县| 昔阳县| 柯坪县| 水富县| 舞钢市| 桐乡市| 平利县| 望江县| 吉木乃县| 克东县| 枣强县| 峨眉山市| 南京市| 镇坪县| 普兰店市| 潮州市| 梨树县| 尼木县| 利辛县| 哈密市|