对http3.0的理解
- http3把下层的TCP协议改成UDP,所以不会出现HTTP1.1的队头阻塞和HTTP2的丢包全部重传问题。
- 是基于UDP的
QUIC
协议(本质上是UDP的低延时的互联网传输层协议),实现了TCP的可靠性,TLS的安全性和HTTP2的并发性。
用一个等式描述 QUIC = UDP + TLS + HTTP
队头阻塞
分为
TCP队头阻塞
和HTTP队头阻塞
-
TCP队头阻塞:发生在一个TCP分节丢失,导致其后续分节不按序到达接收端。
-
HTTP队头阻塞:HTTP管道化引起的请求队头阻塞,只要其中一个响应延时就会造成队头阻塞
如何解决TCP队头阻塞
?
无法避免,跟本身机制有关,只有舍弃TCP协议,改用QUIC协议和SCTP(流控制传输协议)
如何解决HTTP队头阻塞
- http1.1中解决的方法是
域名分片
和并发连接
。 - HTTP2不使用管道化的方式,而是引入了
帧
、消息
和数据流
等概念,每个消息
都被拆分成若干
个帧
进行传输,每个帧
都分配一个序号
。每个帧
在传输是属于一个数据流
,而一个连接上可以存在多个流
,各个帧
在流和连接上独立传输,到达之后在组装成消息
,这样就避免了请求/响应阻塞
。`