QUIC简介
QUIC由互联网工程任务组 (IETF) 定义,是一种基于UDP加密的面向连接的协议,在 OSI 模型中的传输层或第 4 层运行。
虽然IETF于2021年5月才正式采用为标准(rfc9000)但其根源可以追溯到近十几年前。
2012年,Google 的工程师最初开发了 Quick UDP Internet Connections 协议,作为提高 Google Web 应用程序性能的实验。
虽然 QUIC(Quick UDP Internet Connections) 最初是一个缩写词,但 RFC 9000 中的官方标准将 QUIC 描述为一个名称,而不是缩写词。
QUIC: The transport protocol described by this document. QUIC is a name, not an acronym.
QUIC 发展的动力是提高网络通信的速度和性能。
QUIC通过减少握手延迟、提供多路复用、抗丢包特性以及动态适应性等方面的改进,致力于提供更快、更稳定、更安全的网络通信。这些特性使得QUIC在移动设备、高延迟网络以及不稳定网络条件下的性能更为突出,因此在提高Web和移动应用性能方面具有显著的优势。
TCP 是面向连接的,必须执行三次握手才能启动任何连接。此后,必须协商 TLS 的加密参数。只有这样,用户正在寻找的数据才真正开始流动。这意味着仅仅为两个设备建立通信路径就需要多次往返。这会导致用户出现延迟。在一个点击即可获取每条信息的世界中,速度就是一切,因此减少延迟至关重要。
由于QUIC使用UDP,因此不需要完成复杂的握手来建立第一次连接。该协议包括在初始握手过程中启动加密和密钥交换。只需要一次往返即可建立通信路径。
source: Google.com
虽然 UDP 本身是无连接协议,因此在技术上不可靠(意味着数据包可能会丢失),但 QUIC 可以识别丢失的数据并完成重新传输,以确保无缝的用户体验。
QUIC 部分特性
虽然 HTTP/2 协议确实允许多个 HTTP 流共享单个 TCP 连接,但仍然存在丢包问题。
由于 TCP 是面向连接的协议并且需要恢复丢失的数据,因此任何多路复用流上的任何数据包丢失都将导致该连接上的所有流被阻塞,直到丢失被恢复为止。就像在高速公路上,一个人在一条车道上踩刹车,所有车道都停下来。
QUIC 通过使每个通道保持独立运行来解决这个问题。 UDP 对丢失的数据包不关心。 该协议定义了重传参数,并允许仅在一个流中重传数据,而不是阻塞所有流。所以其他车道上不会减速。
还有一些其他好处,但我要谈到的最后一个关键是连接之间会话的可移植性或连接迁移。
便携式设备现在无处不在,因此您通常会在家庭 Wi-Fi 网络上的移动设备上启动会话,然后出门到外面的世界,手机会切换到蜂窝 4G 或 5G 网络。 QUIC 旨在利用该会话的唯一连接 ID 来处理客户端 IP 地址中的这些更改。