- Author: Google
udp, protocol
QUIC(Quick UDP Internet Connections)是一种新的互联网传输协议,由Google开发。 QUIC解决了现代Web应用程序遇到的许多传输层和应用层问题,同时几乎不需要应用程序编写者进行任何更改。
QUIC与TCP + TLS + HTTP2非常相似,但是在 UDP 之上实现。将QUIC作为一个独立的协议,可以实现现有协议无法实现的创新,因为现有协议受到传统客户端和中间盒的阻碍。
QUIC优于TCP + TLS + HTTP2的主要优势包括:
●连接建立延迟
●改善拥塞控制
●无需线头阻塞的多路复用
●前向纠错
●连接迁移
连接建立
简而言之,与用于TCP + TLS的1-3次往返相比,QUIC握手在发送有效载荷之前经常需要 zero roundtrip(不需要往返)
第一次QUIC client和一个server相连的时候,client必须实行1个roundtrip handshake 为了获得更多必须的信息来完成handshake.用户发送过来一个empty的(client hello)CHLO,而server端发送过来一个rejection(REJ)以及必要信息。下次再发送CHLO的时候,就会使用之前连接中的cached credentials来发送加密的请求。
拥塞控制
QUIC 使用的是可插播的拥塞控制,并且相比TCP提供丰富的信息。例如谷歌的QUIC实现使用的是reimplementation of TCP Cubic
richer 信息的一个例子是每个包裹,原创或者重传。都携带新的sequence号,这允许QUIC发送方来分辨ACK,而且可以精确计算rtt时间。
多路径问题
一个最大的问题HTTP2在TCP上的是head-of-lines阻塞问题。在TCP之上的HTTP2的一个更大问题是线头阻塞问题。应用程序将TCP连接视为字节流。当TCP数据包丢失时,该HTTP2连接上的任何流都不能前进,直到远端重新发送和接收数据包 - 即使具有这些数据流的数据包已经到达并且正在缓冲区中等待。
由于QUIC是从头开始设计用于多路复用操作的,因此丢失的携带单个流数据的数据包通常仅影响该特定流。可以在到达时立即将每个流帧分派到该流,因此可以继续重新组装没有丢失的流并在应用中前进。
前向纠错
为了从丢包中恢复,QUIC采用了FEC技术,更像RAID-4技术,会从FEC包裹中恢复,sender会决定是否发送FEC包裹来优化特殊的场景
连接整个
QUIC 的连接是64-bit connection ID, TCP 连接是4-tuple source address source port destination port 以及destination address. 这意味着如果改变了IP地址或者port,TCP连接会不再合理,而QUIC的client当它change IP address 的时候,他会使用旧的连接ID, 继续从新的IP地址,而不会有interrupt.
UDT协议
基于UDP的数据传输协议(英语:UDP-based Data Transfer Protocol,缩写:UDT)是一种互联网数据传输协议。UDT的主要目的是支持 高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。