HTTP3为什么抛弃了经典的TCP 而选择QUIC(2)
HTTP3为什么抛弃了经典的TCP

这就造成了阻塞,虽然一个连接可传多个流,但仍然存在单点问题。这个问题就叫做队头阻塞。
QUIC如何解决的
TCP 这个问题是无解的,QUIC 就是为了彻底解决这个问题。
如下图所示,两台设备之间建立的是一个 QUIC 连接,但是可以同时传输多个相互隔离的数据流。例如黄色是一个数据流,蓝色是一个数据流,它俩互不影响,即便其中一个数据流有丢包的问题,也完全不会影响到其他的数据流传输。
这样一来,也就解决了 TCP 的队头阻塞问题。

为什么要基于UDP协议
QUIC 虽然是和TCP 平行的传输协议,工作在传输层,但是其并不是完全采用全新设计的,而是对 UDP 协议进行了包装。
UDP 是无连接的,相对于 TCP 来说,无连接就是不可靠的,没有三次握手,没有丢包重传,没有各种各样的复杂算法,但这带来了一个好处,那就是速度快。
而 QUIC 为了达到 TCP 的可靠性,所以在 UDP 的基础上增加了序号机制、丢包重传等等 UDP 没有而 TCP 具有的特性。
既然这么多功能都做了,还差一个 UDP 吗,完全全新设计一个不好吗,那样更彻底呀。
之所以不重新设计应该有两个原因:
- UDP 本身就是非常经典的传输层协议,对于快速传输来说,其功能完全没有问题。
- 还有一个重要的原因,前面也说到了,互联网上的设备太多,而很多设备只认 TCP 和 UDP 协议,如果设计一个完全全新的协议,很难实施。
QUIC协议
不需要三次握手
QUIC 建立连接的速度是非常快的,不需要 TCP 那样的三次握手,称之为 0-RTT(零往返时间)及 1-RTT(1次往返时间)。
QUIC 使用了TLS 1.3传输层安全协议,所以 QUIC 传输的数据都是加密的,也就是说 HTTP/3 直接就是 HTTPS 的,不存在 HTTP 的非加密版本。
正是因为这样,所以,QUIC 建立连接的过程就是 TLS 建立连接的过程,如下图这样,首次建立连接只需要 1-RTT。

而在首次连接建立之后,QUIC 客户端就缓存了服务端发来的 Server Hello,也就是加密中所需要的一些内容。
在之后重新建立连接时,只需要根据缓存内容直接加密数据,所以可以在客户端向服务端发送连接请求的同时将数据也一并带过去,这就是 0-RTT 。
连接不依靠IP
相关阅读
-
镜像关键技术有哪些 重要的镜像技术有哪些?
相对于大多数人镜像关键技术有哪些的教程内容,接下来就是全面介绍。 镜像端口 Mirror Port 镜像端口是原始报文经过的端口,通过配置,这个端口上的数据将被复制一份以供监控或分析。 镜
-
家用服务器怎么搭建 自己搭建游戏服务器教程
今日小编为你讲解家用服务器怎么搭建和自己搭建游戏服务器教程方面的内容,一起来了解了解吧。 最近要涉及到服务器的部署,用Linux服务器的部署,配置,搭建,这里总结一下,不为别的
-
深入浅出:MySQL数据库全面解析
今天带来的IT技巧小经验的相关介绍,具体介绍如下: MySQL是一个广泛使用的关系型数据库管理系统,由瑞典MySQL AB公司开发,现在属于Oracle公司。 从小型个人网站到大型企业级应用,MySQL的应
-
MySQL事务提交和崩溃恢复
本文导读:MySQL事务提交和崩溃恢复的相关介绍,接下来IT袋网小编为大家介绍。 MySQL中的XA协议 有一个名叫X/Open的组织提出了一个名为XA的规范。这个XA规范提出了2个角色: 一个全局事务由多


