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

每一代HTTP協(xié)議都解決了什么問題?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
盡管HTTP/2.0解決了應(yīng)用層的隊(duì)頭阻塞問題,傳輸層(TCP)仍然存在隊(duì)頭阻塞。由于TCP協(xié)議的可靠性,即按順序發(fā)送和接收數(shù)據(jù),且受到擁塞控制的影響,少量的丟包可能導(dǎo)致整個(gè)TCP連接上的所有流被阻塞。

最近簡(jiǎn)單研究了HTTP協(xié)議的發(fā)展歷程,對(duì)此進(jìn)行了一些總結(jié)。

讓我們逐一回顧一下HTTP的版本演進(jìn):HTTP/1.0 -> HTTP/1.1 -> HTTP/2.0 -> HTTP/3.0(QUIC)。

HTTP/1.0

HTTP 1.0于1996年首次發(fā)布,規(guī)定了瀏覽器與服務(wù)器之間只保持短暫的連接。每次瀏覽器請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接,而在服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接。然而,這種方式存在缺陷,因?yàn)門CP連接的建立需要經(jīng)歷三次握手,導(dǎo)致每次HTTP請(qǐng)求都要重新執(zhí)行這個(gè)繁瑣的過程,效率相當(dāng)?shù)拖隆?/p>

HTTP/1.1

HTTP 1.1于1997年發(fā)布,引入了默認(rèn)的持久連接(Connection: keep-alive),消除了每次HTTP請(qǐng)求都重新建立TCP連接的需求。盡管如此,它并未解決HOL(隊(duì)頭)阻塞問題。HOL阻塞指的是當(dāng)瀏覽器允許的并行請(qǐng)求數(shù)用完時(shí),后續(xù)請(qǐng)求需要等待前面的請(qǐng)求完成。

HTTP/2.0

HTTP 2.0在2015年發(fā)布,通過引入多路復(fù)用解決了HOL阻塞問題。這一版本將一個(gè)TCP連接劃分為多個(gè)流(Stream),每個(gè)流中可以傳輸多個(gè)消息(Message),而每個(gè)消息則由多個(gè)最小的二進(jìn)制幀(Frame)組成。通過為每個(gè)用戶操作分配一個(gè)流編號(hào)(Stream ID),建立了與服務(wù)端之間的TCP通道。這種方式使得客戶端的每個(gè)請(qǐng)求都可以開始下一次請(qǐng)求,從而解決了應(yīng)用層的隊(duì)頭阻塞。

不過,盡管HTTP/2.0解決了應(yīng)用層的隊(duì)頭阻塞問題,傳輸層(TCP)仍然存在隊(duì)頭阻塞。由于TCP協(xié)議的可靠性,即按順序發(fā)送和接收數(shù)據(jù),且受到擁塞控制的影響,少量的丟包可能導(dǎo)致整個(gè)TCP連接上的所有流被阻塞。

HTTP/3.0

HTTP 3.0的第一個(gè)草案于2020年發(fā)布,并于2022年6月6日正式成為RFC9114標(biāo)準(zhǔn)。HTTP/3.0摒棄了TCP,采用UDP上的QUIC協(xié)議來傳輸應(yīng)用層數(shù)據(jù),從而消除了傳輸層的隊(duì)頭阻塞問題。

QUIC使用UDP協(xié)議在兩個(gè)端點(diǎn)之間建立多個(gè)獨(dú)立的流(Stream),這意味著在大多數(shù)情況下,一個(gè)流的數(shù)據(jù)包丟失不會(huì)對(duì)其他流產(chǎn)生影響。這一創(chuàng)新有效地解決了隊(duì)頭阻塞問題,使得HTTP/3.0在性能和效率方面邁出了一大步。

HTTP 3.0 還沒有大面積的使用,我能想到的問題只有兩個(gè)。

第一個(gè)是 CN 地區(qū)對(duì) UDP 的 QOS 或阻斷,尚不清楚后續(xù)是否會(huì)放寬。

第二個(gè)是UDP協(xié)議依賴四元組信息,大部分沒有公網(wǎng)IPv4的設(shè)備都需要經(jīng)過路由器或防火墻的NAT轉(zhuǎn)換才能和服務(wù)端進(jìn)行通信。NAT 設(shè)備無法知道 UDP 連接什么時(shí)候斷開,因此在刪除自身的 NAT記錄時(shí)可能會(huì)導(dǎo)致尚在通信中的 UDP 連接斷開。

后面同事和我講了 QUIC 協(xié)議有一個(gè) ConnectionId 之類的東西,就算網(wǎng)絡(luò)環(huán)境飄了,他都可以把連接恢復(fù)起來。

我查了一下,專業(yè)術(shù)語是:Connection Migration,有一個(gè)提案:https://datatracker.ietf.org/doc/html/draft-ietf-quic-transport-23#section-9 。

最后附上其他大佬畫的一張圖。

圖片圖片

參考

? https://github.com/ByteByteGoHq/system-design-101

責(zé)任編輯:武曉燕 來源: 整點(diǎn)bug
相關(guān)推薦

2024-11-05 08:16:04

HTTP/3HTTP 2.0QUIC

2020-11-02 13:25:45

Redis數(shù)據(jù)庫開源

2011-11-30 15:28:32

在線協(xié)作系統(tǒng)

2014-09-28 10:28:59

Docker云計(jì)算

2023-11-08 14:03:47

數(shù)據(jù)可視化數(shù)字化轉(zhuǎn)型

2020-06-15 08:06:25

ES數(shù)據(jù)

2025-06-16 03:22:00

2024-12-09 09:30:00

適配器模式設(shè)計(jì)模式代碼

2019-04-26 13:01:16

ServiceMesh微服務(wù)架構(gòu)

2023-05-31 07:32:37

2025-10-30 01:45:00

2021-12-15 23:42:56

Webpack原理實(shí)踐

2022-04-04 07:51:32

Web框架

2021-03-23 18:32:46

JavaScript編程開發(fā)

2023-09-14 09:35:08

iPhone系統(tǒng)版本

2017-10-16 00:57:23

單元測(cè)試代碼覆蓋

2021-07-16 06:56:50

邊緣計(jì)算分布式

2021-10-16 12:52:17

Builder模式生成器

2020-05-22 10:02:43

Python語言編程

2025-08-28 08:02:00

點(diǎn)贊
收藏

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