您的位置:首页 > 产品设计 > UI/UE

QUIC (Quick UDP Internet Connection)协议简述

2018-01-29 20:17 435 查看
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协议实现,优点在于:
    连接建立的延迟
灵活的拥塞控制
无线头阻塞的多路复用
经过身份验证和加密的头和有效负载
流和连接流控制
前向纠错
连接迁移
[b]连接建立的延迟[/b]
QUIC结合了加密和传输握手,减少了建立一个安全连接所需要的往返路径。
QUIC 0RTT
TCP+TLS 1~3RTT
QUIC现有的握手未来将被TLS1.3替代。
[b]灵活的拥塞控制[/b]
QUIC比TCP的拥塞控制信号种类更丰富。
更丰富的信息的一个例子是,每一个包,不管是原始的还是重新传输的,都携带一个新的数据包序列号。这使得一个QUIC发送者能够区分从ack中重新传输的ack,从而避免了TCP的再传输模糊问题。QUIC
ack还显式地在接收数据包和它的确认被发送之间携带延迟,再加上单调递增的数据包数量,这就允许精确的往返时间(RTT)计算。
最后,QUIC的ACK帧支持最多256个NACK范围,所以QUIC比TCP(带SACK)更有弹性,也可以在重排序或者丢失时在线路中保留更多的字节,客户端和服务器都能更准确地了解对方接收到的数据包。
[b]无线头阻塞的多路复用[/b]
TCP段的丢失将导致所有后续段的阻塞,直到重新传输到达,而不考虑在后续段中的HTTP/2流。
因为QUIC是为多路复用而设计的,丢失数据包的数据包通常只会影响特定的流。每个流帧都可以在到达时立即被发送到该流,因此没有丢失的流可以继续重新组装,并在应用程序中取得进展。
[b]经过身份验证和加密的头和有效负载[/b]
QUIC数据包总是经过身份验证的,通常有效负载是完全加密的。未加密的包头的部分仍然通过接收方进行身份验证,以便阻止第三方的数据包注入或操作。QUIC保护了连接不知情或不知情的中端操纵终端之间的通信。
[b]前向纠错[/b]
如果组中的一个包丢失,那么该包的内容就可以从FEC包和组中剩余的包中恢复。发送方可以决定是否发送FEC数据包来优化特定的场景(例如,请求的开始和结束)。
[b]连接迁移[/b]
TCP连接由一个4元组的源地址、源端口、目标地址和目的端口标识。TCP的一个众所周知的问题是,连接不能在IP地址更改(例如,通过从WiFi切换到蜂窝)或端口号更改(当客户机的NAT绑定过期导致服务器端看到的端口号更改时)是持续。
QUIC连接由一个64位连接ID标识,由客户机随机生成。由于连接ID在这些迁移中保持不变,所以QUIC可以在IP地址更改和NAT重新绑定中存活。QUIC还提供了一个迁移客户机的自动加密验证,因为一个迁移的客户机继续使用相同的会话密钥来加密和解密包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCP 网络 QUIC UDP