QUIC (Quick UDP Internet Connection)协议简述

QUIC是一种基于UDP的传输层协议,旨在减少连接建立延迟并提供更灵活的拥塞控制。它支持多路复用,避免了头部阻塞,并且所有的QUIC数据包都是经过身份验证的,通常还进行了加密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QUIC (Quick UDP Internet Connection)提供与HTTP/2等价的流量控制,和TLS等价的安全性,并且具有与TCP等价的连接语义、可靠性和拥塞控制。

QUIC完全在用户空间中运行,目前作为Chromium浏览器的一部分,它被发送给用户,支持快速部署和试验。

QUIC中使用的所有整数值,包括长度、版本和类型都在低位字节顺序中,而不是在网络字节顺序中。在动态大小的框架中,QUIC并不强制执行类型的对齐。

·Client:初始化QUIC连接的Endpoint

·Server:接受传入QUIC连接的Endpoint

·Endpoint:连接的客户端或服务器端。

·Stream:在QUIC连接中跨逻辑通道的一个双向的字节流。

·Connection:两个QUIC Endpoint之间的一个对话,可以在单个加密语境之下复用多个流。

·Connection ID:一个QUIC连接的身份标识。

·QUIC Packet:一个格式良好的UDP有效负载,可以由QUIC接收器解析。这个文档中的QUIC包大小指的是UDP有效负载大小。

在功能上等效与TCP+TLS+HTTP/2,但是基于UDP协议实现,优点在于:

    连接建立的延迟

灵活的拥塞控制

无线头阻塞的多路复用

经过身份验证和加密的头和有效负载

流和连接流控制

前向纠错

连接迁移

连接建立的延迟

QUIC结合了加密和传输握手,减少了建立一个安全连接所需要的往返路径。

QUIC 0RTT

TCP+TLS 1~3RTT

QUIC现有的握手未来将被TLS1.3替代。

灵活的拥塞控制

QUICTCP的拥塞控制信号种类更丰富。

更丰富的信息的一个例子是,每一个包,不管是原始的还是重新传输的,都携带一个新的数据包序列号。这使得一个QUIC发送者能够区分从ack中重新传输的ack,从而避免了TCP的再传输模糊问题。QUIC ack还显式地在接收数据包和它的确认被发送之间携带延迟,再加上单调递增的数据包数量,这就允许精确的往返时间(RTT)计算。

最后,QUICACK帧支持最多256NACK范围,所以QUICTCP(SACK)更有弹性,也可以在重排序或者丢失时在线路中保留更多的字节,客户端和服务器都能更准确地了解对方接收到的数据包。

无线头阻塞的多路复用

TCP段的丢失将导致所有后续段的阻塞,直到重新传输到达,而不考虑在后续段中的HTTP/2流。

因为QUIC是为多路复用而设计的,丢失数据包的数据包通常只会影响特定的流。每个流帧都可以在到达时立即被发送到该流,因此没有丢失的流可以继续重新组装,并在应用程序中取得进展。

经过身份验证和加密的头和有效负载

QUIC数据包总是经过身份验证的,通常有效负载是完全加密的。未加密的包头的部分仍然通过接收方进行身份验证,以便阻止第三方的数据包注入或操作。QUIC保护了连接不知情或不知情的中端操纵终端之间的通信。

前向纠错

如果组中的一个包丢失,那么该包的内容就可以从FEC包和组中剩余的包中恢复。发送方可以决定是否发送FEC数据包来优化特定的场景(例如,请求的开始和结束)

连接迁移

TCP连接由一个4元组的源地址、源端口、目标地址和目的端口标识。TCP的一个众所周知的问题是,连接不能在IP地址更改(例如,通过从WiFi切换到蜂窝)或端口号更改(当客户机的NAT绑定过期导致服务器端看到的端口号更改时)是持续。

QUIC连接由一个64位连接ID标识,由客户机随机生成。由于连接ID在这些迁移中保持不变,所以QUIC可以在IP地址更改和NAT重新绑定中存活。QUIC还提供了一个迁移客户机的自动加密验证,因为一个迁移的客户机继续使用相同的会话密钥来加密和解密包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值