shfshanyue / Daily-Question

互联网大厂内推及大厂面经整理,并且每天一道面试题推送。每天五分钟,半年大厂中
https://q.shanyue.tech
4.95k stars 510 forks source link

【Q442】http3 解决了什么问题 #450

Open shfshanyue opened 3 years ago

shfshanyue commented 3 years ago

http3 基于 UDP 协议,这是与以前版本的 http 最大的不同,可以解决 http2 TCP 连接阻塞的问题。

marsk6 commented 2 years ago

我们都知道 UDP 不可靠,那么如何保证连接传输的可靠性

kurodasense commented 7 months ago

一个参考文献:https://www.cnblogs.com/wiesslibrary/p/16446553.html

Echo-MakeGreatEffort commented 2 months ago
  1. 传输层性能提升:HTTP/3 基于 QUIC 协议,而不是像 HTTP/2 那样依赖 TCP。QUIC 是一个运行在 UDP 之上的传输层协议,它为 HTTP/3 提供了更低的延迟和更快的连接建立速度。由于 QUIC 避免了 TCP 的“握手”过程,并结合了 TLS 安全层,HTTP/3 可以在一次握手中完成连接和加密,减少了延迟。
  2. 提升安全性:QUIC 默认集成了 TLS 1.3 协议,这意味着加密是协议固有的一部分。相比传统的 TCP+TLS 组合,QUIC 的加密效率更高,安全性也更强
  3. 优化流量控制与丢包恢复:QUIC 在流量控制和丢包恢复上做了改进,它能够更快速、更有效地检测丢包,并进行数据重传,而不需要等待 TCP 层的处理
  4. 更快的恢复连接:QUIC 支持连接迁移。当设备的 IP 地址或网络环境发生变化时,QUIC 能够保持连接,不需要像 TCP 那样重新建立连接。这对于移动设备切换网络(如从 Wi-Fi 切换到蜂窝数据)时,能显著减少中断。
  5. 解决队头阻塞问题:HTTP/2 虽然支持多路复用,但仍然依赖 TCP,导致了队头阻塞问题。如果一个 TCP 包丢失,整个连接上的所有流都会被阻塞,直到该包被重新传输。QUIC 通过在每个流上独立传输数据,避免了一个丢包影响多个流,提升了数据传输的稳定性和效率