偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

HTTP/3如何擊敗了HTTP/2?

譯文 精選
網(wǎng)絡(luò)
目前,HTTP/3已面市,它并非單純的升級,而是對用戶數(shù)據(jù)報協(xié)議(UDP)的重新設(shè)計。下面,讓我們來詳細(xì)了解真實用戶的使用感受,以及廣泛的互聯(lián)網(wǎng)性能監(jiān)控。

譯者 | 陳峻

審校 | 重樓

如果你關(guān)注數(shù)據(jù)傳輸?shù)男阅?、可靠性、以及在為移動?yīng)用布局的話,是時候測試和啟用HTTP/3了。

由互聯(lián)網(wǎng)工程任務(wù)組(IETF)于2015年正式發(fā)布下一代HTTP協(xié)議--HTTP/2,旨在解決當(dāng)時HTTP/1.1協(xié)議存在的性能瓶頸問題,提升網(wǎng)絡(luò)傳輸效率。不過,盡管HTTP/2有著諸多承諾,但網(wǎng)絡(luò)延遲與抖動仍存在于現(xiàn)實的網(wǎng)絡(luò)世界中。目前,HTTP/3已面市,它并非單純的升級,而是對用戶數(shù)據(jù)報協(xié)議(UDP)的重新設(shè)計。下面,讓我們來詳細(xì)了解真實用戶的使用感受,以及廣泛的互聯(lián)網(wǎng)性能監(jiān)控。

HTTP/2的核心限制

當(dāng)HTTP/2推出時,它通過引入多路復(fù)用、二進制幀和標(biāo)頭壓縮,來解決HTTP/1.1的局限性。然而,其最大的缺陷在于它仍然與TCP綁定。而TCP是一種并不適合現(xiàn)代多路網(wǎng)絡(luò)工作負(fù)載的協(xié)議。其具體表現(xiàn)在:

  • TCP行頭(head-of-lineHOL)的阻塞:盡管HTTP/2允許在單個連接中跑多個傳輸流,但由于TCP的有序交付要求,一旦丟失的TCP數(shù)據(jù)包則會阻斷掉所有傳輸流。
  • 連接設(shè)置的開銷:建立HTTP/2連接往往需要經(jīng)歷:DNS解析→TCP握手→TLS握手(通常使用應(yīng)用層協(xié)議進行協(xié)商)的過程。
  • 恢復(fù)處罰:數(shù)據(jù)包丟失會觸發(fā)TCP級別的重新傳輸。由于增加了首字節(jié)(TTFB)和交互時間(TTI),因此這往往會影響到整個連接。而用戶在真實使用中確實能感受到由HTTP/2代理引發(fā)的抖動、丟包、延遲、以及可靠性降低。

HTTP/3如何解決TCP的核心瓶頸

其實,HTTP/3并非簡單地將HTTP/2應(yīng)用到UDP上,而是為當(dāng)前互聯(lián)網(wǎng)重新構(gòu)建了HTTP/2,并運行在QUIC(快速UDP互聯(lián)網(wǎng)連接)上。此處的QUIC是由谷歌設(shè)計的傳輸協(xié)議。雖然用到了UDP,但它是一套針對可靠性、加密和性能而自行構(gòu)建的技術(shù)棧??偟膩碚f,HTTP/3的主要優(yōu)勢在于:

  • 無行頭阻塞QUIC支持完全獨立的傳輸流。即使某個傳輸流中出現(xiàn)了丟失包,也不會阻止其他數(shù)據(jù)包的傳輸。
  • 更快的握手QUIC結(jié)合了加密和傳輸設(shè)置。TLS 1.3直接被集成到了QUIC中,以允許1-RTT(往返時間)甚至0-RTT的恢復(fù)。
  • 恢復(fù)的改進QUIC使用了數(shù)據(jù)包編號和ACK(確認(rèn))范圍,而非序號,因此具有更智能的擁塞控制和恢復(fù)機制。
  • 連接的遷移QUIC連接可以在IP變更中留存下來。這對于在Wi-FiLTE之間切換的移動網(wǎng)絡(luò)來說非常實用。此外,在高丟包率的條件下,HTTP/3仍能縮短現(xiàn)實傳輸?shù)牡却图虞d時間。

HTTP/3工作原理

為了充分讀懂HTTP/3的工作原理,我們需要了解瀏覽器、DNS和緩存層,并獲悉它們是如何相互協(xié)同的。

1.初始DNS查詢

該過程始于客戶端對A/AAAA記錄執(zhí)行DNS查詢時。該查詢會將IPV6映射到相應(yīng)的域名上。為了讓HTTP/3使用UDP之上的QUIC,服務(wù)端必須向客戶端發(fā)出支持QUIC的信號。此類信號主要有兩種方式:

  • DNS級別:服務(wù)端可以使用HTTPS記錄(特別是各種服務(wù)綁定的參數(shù)或SvcParams)直接在DNS響應(yīng)中包含對QUIC的支持,以告知客戶端支持QUIC(以及HTTP/3)。示例:_443._tcp.example.com. IN HTTPS 1 . alpn="h3, h2"
  • 瀏覽器級別:如果不通過DNS提供QUIC信息,服務(wù)端在初始化HTTP/2連接期間,仍可能在響應(yīng)標(biāo)頭中發(fā)出支持HTTP/3的信號。此處的Alt-Svc標(biāo)頭(例如,alt-svc: h3=":443"; ma=2592000)被包含在服務(wù)端的HTTP/2響應(yīng)中,以通知瀏覽器HTTP/3可用,客戶端需將其用于后續(xù)的連接。

2.Alt-Svc廣告

如果存在Alt-Svc標(biāo)頭,則:

  • 瀏覽器在mamax-age)參數(shù)所定義的持續(xù)時間內(nèi)對其緩存。
  • 在后續(xù)訪問時,瀏覽器直接嘗試HTTP/3,而無需先通過HTTP/2進行協(xié)商。

3.瀏覽器的緩存行為

一旦Alt-Svc被緩存:

  • 瀏覽器將對于后續(xù)同一來源的連接,優(yōu)先考慮HTTP/3。
  • 如果QUIC連接失?。ɡ绯霈F(xiàn)被阻止的UDPNAT問題),瀏覽器會通過TCP靜默地返回HTTP/2,而不會中斷用戶的瀏覽體驗。

4.TLS握手中的ALPN

應(yīng)用層協(xié)議協(xié)商(ALPN)會在TLS握手期間被用于協(xié)商HTTP的版本:

  • 如果服務(wù)端支持HTTP/3,它便會發(fā)布h3 ALPN字符串。
  • QUIC握手則會啟用a1-RTT連接(如果使用的是會話恢復(fù)的話,則啟用0-RTT)。
  • 如果服務(wù)不支持h3,客戶端將會自動降回到HTTP/2。

5.回退流(可通過Wireshark觀察到)

以下是HTTP/3在實踐中能夠發(fā)揮的作用:

  • 瀏覽器根據(jù)A/AAAA記錄(可能還有HTTPS/SVCB或服務(wù)綁定記錄)發(fā)送DNS查詢。
  • 它嘗試向目標(biāo)IP和端口進行QUIC握手。
  • 如果在較短的超時窗口(通常為300-500毫秒)內(nèi)沒有收到QUIC響應(yīng),瀏覽器將并行啟動TCP握手。

可見,瀏覽器上發(fā)生的實際上是QUICTCP的連接“比拼”,即:在完成握手后,判斷:

  • 如果QUIC成功,則使用HTTP/3。
  • 如果QUIC被阻止或超時,基于TCPHTTP/2將接管。

這種雙握手模式確保了HTTP/3為首選,如果需要,則可以優(yōu)雅地回退到HTTP/2,且不會影響用戶的體驗。就兼容性而言:

  • ChromeFirefox都能夠支持這種回退機制。
  • Microsoft Edge相對保守,可能需要手動啟用HTTP/3或?qū)嶒炐栽O(shè)置,才能進行一致性的測試。

讓我們再從性能方面進行考慮:

  • 雖然回退較快,但并非瞬時,因此盡管QUICTCP的競賽最大限度地減少了中斷,但是在回退到TCP時可能會帶來較小的延遲,特別是在高損耗或高延遲環(huán)境中。
  • 而在網(wǎng)絡(luò)狀況的影響方面:在出現(xiàn)Aggressive NAT、以及網(wǎng)絡(luò)抖動或數(shù)據(jù)包丟失率過高等情況時,QUIC的連接也可能會中斷或失敗。此類情況在亞太地區(qū)和非洲尤為明顯。

總的說來,HTTP/3的雙回退策略(無論是通過DNSHTTPS記錄,還是Alt-Svc標(biāo)頭發(fā)起)都能夠提供強大、用戶透明的協(xié)議協(xié)商功能。即使在次優(yōu)的網(wǎng)絡(luò)條件下,瀏覽器也可以通過回退到HTTP/2來保持連接,以確保可靠性。

部署注意事項

盡管具有架構(gòu)優(yōu)勢,但是HTTP/3并非隨處可用。在現(xiàn)實世界的網(wǎng)絡(luò)中,仍然會有如下障礙,可能會影響到它的可靠性,甚至完全阻止其被使用。

關(guān)鍵的環(huán)境依賴性:

  • 中間層和防火墻:A.許多企業(yè)防火墻和一些傳統(tǒng)路由器會阻止或降低UDP流量的優(yōu)先級。
    B.QUIC(以及h3擴展)使用UDP端口443,但并非所有網(wǎng)絡(luò)都配置為允許使用該端口。
  • 運營商級NATCGNAT):A.在移動和共享IP環(huán)境中,QUIC的連接ID是一個很大的優(yōu)勢,但如果NAT映射過期設(shè)置太短或被快速重新分配,則會導(dǎo)致QUIC的中斷。
  • 舊路由器和網(wǎng)絡(luò)設(shè)備:A.一些較舊的路由器可能無法很好地處理高速UDP,導(dǎo)致在高吞吐量QUIC會話期間出現(xiàn)數(shù)據(jù)包的抖動或丟失。
  • TLS卸載和代理:

A.在卸載了TLS的邊緣架構(gòu)處(如一些反向代理或負(fù)載平衡器),可能無法原生地支持QUIC,或需要架構(gòu)的調(diào)整。

回退是一項特征,而并非失敗

當(dāng)QUIC因上述任何原因被阻止或失敗時,現(xiàn)代化的瀏覽器和CDN會優(yōu)雅地回退到HTTP/2,這也是h3的精妙之處。下表是兩代技術(shù)的比較:

特點

HTTP/1.1

HTTP/2

HTTP/3

傳輸協(xié)議

TCP

TCP

UDP + QUIC

多路復(fù)用級別

無(每個連接1個請求)

應(yīng)用層(多個流)

傳輸層(QUIC原生流)

并發(fā)請求/

6個(瀏覽器限制)

通過流媒體且無限制

通過流媒體且無限制

行頭阻塞

在應(yīng)用程序/瀏覽器級別

是的(TCPHoL會影響所有流)

否(QUIC避免了傳輸級的HoL

性能(多資產(chǎn))

排隊并被封鎖

并行加載

并行、更適合在較差的網(wǎng)絡(luò)中

TLS支持

可選/通過TCP

強制性(TLS 1.2/1.3

內(nèi)置(僅限TLS 1.3

握手RTT

23RTTTCP + TLS

23RTT

1RTT0-RTT恢復(fù)后)

0-RTT支持

是(在恢復(fù)連接時)

IP移動性/NAT重新綁定

是(通過QUIC連接ID

連接恢復(fù)

TLS會話ID/

TLS會話恢復(fù)

QUIC-原生連接ID

連接重用

有限的

傳輸流優(yōu)先級

需要加密

通常強制執(zhí)行

始終(QUIC通過設(shè)計加密)

瀏覽器/CDN支持

通用

完全支持

快速增加(ChromeSafari等)

丟包狀況

影響整個連接

影響所有多路流

隔離到單個傳輸流

最佳用例

傳統(tǒng)系統(tǒng),向后兼容

帶有常規(guī)網(wǎng)絡(luò)流量的穩(wěn)定網(wǎng)絡(luò)

現(xiàn)代應(yīng)用程序、移動、有損或高延遲網(wǎng)絡(luò)

現(xiàn)實世界正在加速采用HTTP/3

讓我們來查看一些基于年份的數(shù)據(jù):

年份

HTTP/2的采用

HTTP/3的采用

2022

~63%

~22%(參考QUIC

2023

~64%

~28%

2024

~50%

~34%

2025(預(yù)計)

~62.5%

~41.5%

2026年(預(yù)計)

~52.5%

~57.5%

其中:

  • CloudflareFastlyAkamaiCDN現(xiàn)在已默認(rèn)啟用HTTP/3。
  • Chrome、Firefox、SafariEdge都支持HTTP/3。
  • 支持HTTP/3的網(wǎng)站呈增長趨勢,特別是在那些注重性能的地區(qū)。

HTTP/3的重要特性

根據(jù)我們的經(jīng)驗和現(xiàn)實世界的測試,HTTP/3在以下領(lǐng)域意義重大:

  • 高延遲和損包地區(qū):非洲、東南亞偏遠(yuǎn)的拉丁美洲城市。
  • 移動網(wǎng)絡(luò):在LTEWi-Fi之間頻繁切換。
  • 密集API的應(yīng)用:通過非阻塞多路復(fù)用受益于多并發(fā)調(diào)用。
  • 性能第一團隊:愿意投資于毫秒級改進的團隊(如Core Web Vitals)。

真實測試洞見

我們使用跨多個國家的分布式主干節(jié)點,采用強制協(xié)議模式在HTTP/2HTTP/3之間進行并行比較。測量了以下方面:

  • DNS、連接、SSL、等待、加載時間
  • 跨區(qū)域的h2h3之間的性能
  • 數(shù)據(jù)包丟失/抖動與協(xié)議回退的相關(guān)性

在幾乎每個涉及非理想條件的情況下,HTTP/3在等待和加載時間上都優(yōu)于HTTP/2。

性能分析

通過對在六個國家運行的性能比較與分析,基于數(shù)千次運行結(jié)果,我們測量了首字節(jié)時間(TTFB)、最大內(nèi)容顯示(Largest Contentful PaintLCP)和視覺完整性(VC)的中位數(shù)與第99百分位的數(shù)值,結(jié)果表明HTTP/3在關(guān)鍵網(wǎng)絡(luò)性能指標(biāo)上始終優(yōu)于HTTP/2。

HTTP/3的主要改進

測量指標(biāo)

改進(%

首字節(jié)到達時間的中位數(shù)(毫秒)

41.80%

首字節(jié)第99百分位到達時間的中位數(shù)(毫秒)

7.30%

最大內(nèi)容顯示中位數(shù)(毫秒)

10.40%

最大內(nèi)容顯示第99百分位數(shù)(毫秒)

9.60%

視覺完成中位數(shù)(毫秒)

10.50%

視覺完成第99百分位數(shù)(毫秒)

8.60%

如上表所示,HTTP/3大幅減少了TTFB中位數(shù)(平均41.8%)。可見,在所有測試區(qū)域中,初始服務(wù)端的響應(yīng)時間與HTTP/2相比要快得多。同時,最大內(nèi)容顯示(LCP)和視覺完成(VC)的改進也是一致的(平均約10%)。這意味著用戶使用HTTP/3能夠更快地看到最多的內(nèi)容和完整的頁面。

國家級細(xì)分

國家

TTFB Mdn

TTFB 99th

LCP Mdn

LCP 99th

VC Mdn

VC 99th

澳大利亞

84.10%

4.10%

14.90%

16.40%

18.70%

16.30%

巴西

15.80%

-11.60%

7.60%

0.80%

3.20%

-2.30%

德國

78.70%

13.80%

19.10%

8.80%

21.90%

12.50%

日本

10.90%

27.30%

4.70%

20.70%

1.00%

11.80%

英國

47.10%

8.80%

14.40%

7.90%

15.70%

10.10%

美國

13.80%

1.30%

1.70%

3.10%

2.50%

3.30%

如上表所示:

  • 澳大利亞和德國通過HTTP/3(超過78%)得到了最大的TTFB改進,同時轉(zhuǎn)化為LCPVC的顯著提升。
  • 巴西的第99百分位數(shù)TTFBVC顯示了負(fù)改善。該異常情況表明,在最慢的請求中,HTTP/3的表現(xiàn)不如HTTP/2
  • 日本、英國和美國在大多數(shù)指標(biāo)上,顯示出了適度且一致的改善,特別是在中位數(shù)方面。

其他觀察

  • 一致性:中位數(shù)的改進通常大于第99百分位數(shù),表明HTTP/3對于那些典型(非極端)用戶的體驗特別奏效。
  • 區(qū)域差異性:雖然HTTP/3總體向好,但是實際改進程度因地而異,這與各地網(wǎng)絡(luò)基礎(chǔ)設(shè)施和延遲有關(guān)。

實際上,在多個國家的真實骨干測試中,HTTP/3一直優(yōu)于HTTP/2。這在澳大利亞和德國最為明顯。它在減少初始化響應(yīng)時間(TTFB)和頁面渲染速度(LCPVC)上的合理改善已卓見成效。相關(guān)案例也表明,HTTP/3可以為那些延遲敏感的應(yīng)用程序,帶來網(wǎng)絡(luò)性能上的提升。而在巴西等一些地區(qū)的個案中,瀏覽器連接仍傾向于用HTTP/2來處理最慢的請求。

小結(jié)

綜上所述,HTTP/3不僅能提供更快的速度,而且具有一定的魯棒性。如果你關(guān)注數(shù)據(jù)傳輸?shù)男阅?、可靠性、以及在為移動?yīng)用布局的話,是時候測試和啟用HTTP/3了。無論是自運營的基礎(chǔ)設(shè)施,還是使用第三方CDN,由HTTP/3帶來的協(xié)議上的演變,必將為現(xiàn)實世界中上億規(guī)模的用戶帶來更快的互聯(lián)網(wǎng)瀏覽體驗。

譯者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風(fēng)險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗。

原標(biāo)題:HTTP/3 in the Wild: Why It Beats HTTP/2 Where It Matters Most,作者:Wasil Banday

責(zé)任編輯:姜華 來源: 51CTO
相關(guān)推薦

2024-11-05 08:16:04

HTTP/3HTTP 2.0QUIC

2020-03-08 21:22:03

HTTP112

2019-09-23 08:35:52

2019-04-12 10:44:39

2019-11-17 22:47:53

HTTP23

2022-06-21 10:10:14

HTTP協(xié)議TCP

2019-12-13 09:14:35

HTTP2協(xié)議

2022-07-13 14:12:41

HTTP/3前端

2020-12-04 09:30:18

HTTPWeb前端

2023-09-06 12:01:50

HTTP協(xié)議信息

2020-08-26 07:50:01

HTTP 3網(wǎng)絡(luò)協(xié)議HTTP

2021-10-30 19:57:00

HTTP2 HTTP

2020-06-01 15:25:20

HTTP3前端

2020-05-22 09:12:46

HTTP3網(wǎng)絡(luò)協(xié)議

2021-01-31 10:54:50

HTTP協(xié)議GET

2018-11-14 15:00:08

HTTP程序員前端

2024-02-02 09:28:21

FrankenPHP應(yīng)用

2022-06-07 08:39:35

RPCHTTP

2018-06-27 15:14:31

HTTP編碼內(nèi)容

2014-10-22 09:36:41

TCPIP
點贊
收藏

51CTO技術(shù)棧公眾號