http3 解决了什么问题
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 450
Author 回答者: shfshanyue
http3
基于 UDP
协议,这是与以前版本的 http 最大的不同,可以解决 http2 TCP 连接阻塞的问题。
Author 回答者: marsk6
我们都知道 UDP
不可靠,那么如何保证连接传输的可靠性
?
Author 回答者: kurodasense
一个参考文献:https://www.cnblogs.com/wiesslibrary/p/16446553.html
- TCP 为了保证可靠性,窗口左边向右滑动时的长度取决于已经确认的字节数。如果中间出现丢包,就算接收到了更大序号的 Segment,窗口也无法超过这个序列号。
- 而QUIC通过 window_update 帧告诉对端自己可以接收的字节数,这样发送方就不会发送超过这个数量的数据,并且通过 BlockFrame 告诉对端由于流量控制被阻塞了,无法发送数据。因此就算此前有些 packet 没有接收到,它的滑动只取决于接收到的最大偏移字节数。
Author 回答者: Echo-MakeGreatEffort
- 传输层性能提升:HTTP/3 基于 QUIC 协议,而不是像 HTTP/2 那样依赖 TCP。QUIC 是一个运行在 UDP 之上的传输层协议,它为 HTTP/3 提供了更低的延迟和更快的连接建立速度。由于 QUIC 避免了 TCP 的“握手”过程,并结合了 TLS 安全层,HTTP/3 可以在一次握手中完成连接和加密,减少了延迟。
- 提升安全性:QUIC 默认集成了 TLS 1.3 协议,这意味着加密是协议固有的一部分。相比传统的 TCP+TLS 组合,QUIC 的加密效率更高,安全性也更强
- 优化流量控制与丢包恢复:QUIC 在流量控制和丢包恢复上做了改进,它能够更快速、更有效地检测丢包,并进行数据重传,而不需要等待 TCP 层的处理
- 更快的恢复连接:QUIC 支持连接迁移。当设备的 IP 地址或网络环境发生变化时,QUIC 能够保持连接,不需要像 TCP 那样重新建立连接。这对于移动设备切换网络(如从 Wi-Fi 切换到蜂窝数据)时,能显著减少中断。
- 解决队头阻塞问题:HTTP/2 虽然支持多路复用,但仍然依赖 TCP,导致了队头阻塞问题。如果一个 TCP 包丢失,整个连接上的所有流都会被阻塞,直到该包被重新传输。QUIC 通过在每个流上独立传输数据,避免了一个丢包影响多个流,提升了数据传输的稳定性和效率