QUIC简介

  • Post author:
  • Post category:其他


一、概述、

QUIC(Quick udp Internet connection):快速UDP互联网协议。相比于当前广泛应用的http2+tcp+tls有如下优势:

  1. 减少三次握手及TLS握手时间;
  2. 改进拥塞机制;
  3. 避免队头阻塞的多路复用;
  4. 连接迁移;
  5. 向前冗余纠错;

    在这里插入图片描述



二、QUIC核心特征


1、建立连接延时低


0RTT建立连接。


2、改进拥塞控制

  • 可插拔:应用层能实现不同的拥塞控制算法,不需要内核或者操作系统;
  • 单调递增的Packet Number:传统的TCP重传时序列号一致会导致计算RTT时间有误,QUIC引入

    Stream Offset



    在这里插入图片描述

    在这里插入图片描述
  • 不允许Reneging;
  • 更快的ACK块:QUIC相对于TCP的Sack可以提供更多的 Sack Block,可以提升网络的恢复速度,减少重传量;
  • Ack Delay时间:

    在这里插入图片描述


3、基于stream和connecton级别的流量控制

  • Stream可以认为是一条HTTP请求;
  • Connection可以类比一条TCP连接。多路复用意味一条Connetion上同时存在多条Stream。要对单个Stream控制,也要对所有Stream进行总体控制;


4、没有队头阻塞的多路复用


QUIC多路复用一条连接上可以发送多个HTTP请求(stream)。QUIC一个连接上的多个stream之间没有依赖,之间的丢失不会影响另一个。

传统的TCP连接和TLS协议

在这里插入图片描述

在这里插入图片描述


为何QUIC多路复用可以避免上述问题?

  • QUIC基本传输单元式时Packet,不会超过MTU大小,加密和认证都是基于Packet,这样可以避免TLS协议存在的队头阻塞;
  • Stream之间相互独立,不存在TCP队头阻塞;
    在这里插入图片描述


    5、加密认证的报文
  • TCP 协议头部没有经过任何加密和认证,所以在传输过程中很容易被中间网络设备篡改,注入和窃听。比如修改序列号、滑动窗口。这些行为有可能是出于性能优化,也有可能是主动攻击。
  • 但是 QUIC 的 packet 可以说是武装到了牙齿。除了个别报文比如 PUBLIC_RESET 和 CHLO,所有报文头部都是经过认证的,报文 Body 都是经过加密的。
  • 这样只要对 QUIC 报文任何修改,接收端都能够及时发现,有效地降低了安全风险。


6、连接迁移


TCP连接由四元组标识,当其中一个元素改变时,会导致此连接不可用(客户端经常会改变)。例如当手机在WIFI和4G移动网络切换时,IP发生变化,需要重新建立TCP连接。如使用公共NAT出口时。QUIC如何做到连接迁移呢,QUIC连接是以64位的随机数作为ID标识,这样,IP/Port改变,只要ID不变,那么这条连接依然维持。



四、其他名词

  • TCP Fast Open;
  • Sack、D-Sack;
  • RTT、RTO;



版权声明:本文为peng_shakalaka原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。