QUIC协议详解

https://www.zhihu.com/zvideo/1447315932791730176

1. QUIC简介

一种基于UDP的传输协议,用于提升网络加载速度,在弱网环境下表现较好。
截屏2022-02-17 下午5.53.02

2. QUIC数据格式

QUIC数据包分为Header和Data两部分。
截屏2022-02-17 下午5.55.50

  • Frame Type:Stream、ACK、Padding、Blocked等
  • Stream Frame:传输应用协议
    截屏2022-02-17 下午6.00.07

3. QUIC实现原理

3.1 建立连接

回顾:建立连接-HTTPS

HTTPS的握手过程包含TCP握手和TLS握手

截屏2022-02-17 下午6.03.12
建立连接-QUIC

QUIC基于TLS实现连接建立。可以实现0-RTT握手。
截屏2022-02-17 下午6.05.44
截屏2022-02-17 下午7.53.50

前向安全:用来产生会话秘钥的长期密钥泄露出去,不会泄露以前的通讯内容。

截屏2022-02-17 下午8.15.20

3.2 可靠传输

可靠传输的要求

  • 数据完整性:发送端发出的数据包,接收端都能收到。
  • 数据有序性:接收端能按序组装数据包,解码得到原始数据。
数据完整性

实现方案:基于包号PKN和确认应答SACK的丢包重传机制
截屏2022-02-17 下午8.21.35

3.3 流量控制

滑动窗口

和TCP一样利用滑动窗口机制实现流量控制。
截屏2022-02-17 下午8.25.52
如果发送端收到了接收端的ACK帧,窗口就会向右滑动,发送新的数据包。
截屏2022-02-17 下午8.31.26

和TCP的不同

和TCP不同的是,QUIC的滑动窗口分为ConnectionStream两种级别

  • Connection流量控制:规定了所有数据流的总窗口大小
  • Stream流量控制:规定了每个流的窗口大小
    截屏2022-02-17 下午8.35.32

3.4 拥塞控制

目的:通过拥塞窗口限制发送方的数据量,避免整个网络发生拥塞。
截屏2022-02-17 下午8.44.57
 swnd  = min ⁡  [rwnd, [cwnd]  \text { swnd }=\min \text { [rwnd, [cwnd] }  swnd =min [rwnd, [cwnd] 

3.5 多路复用

首次提出:HTTP2

定义:单个TCP连接上可以同时发送多个HTTP请求

目的:解决HTTP1.1中单个连接1次只能发送一个请求的性能瓶颈
截屏2022-02-17 下午8.51.02
1个请求对应1个流,通过Stream ID就可以判断该数据帧属于哪个请求。

假设有A和B两个请求,对应的Stream ID分别为1和2。

截屏2022-02-17 下午8.52.57

存在问题:队头阻塞

截屏2022-02-17 下午8.54.58

解决方案:给每个请求流都分配一个独立的滑动窗口
截屏2022-02-17 下午8.57.34

3.6 连接迁移

定义:当客户端切换网络时,和服务器的连接并不会断开,仍然可以正常通信。

实现原理:QUIC的连接是基于64位的Connection ID,网络切换并不会影响Connection ID的变化,连接在逻辑上仍然是通的。
截屏2022-02-17 下午9.01.13

4. QUIC总结

问题:QUIC是如何提升网络加载速度的?

  1. 降低连接耗时:在客户端有缓存的情况下实现 0-RTT 建立连接

  2. 更灵活的拥塞控制:在用户态可以为每个请求配置不同的拥塞控制策略

  3. 无队头阻塞的多路复用:在用户态可以为每个请求配置不同的拥塞控制策略

  4. 连接迁移:网络切换不会中断数据传输

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QUICQuick UDP Internet Connections)是基于UDP协议的一种传输协议。它是一种用于提供安全且快速的互联网连接的协议。与TCP相比,QUIC具有更低的连接延迟和更好的网络拥塞控制能力。QUIC协议将数据包分为Header和Data两部分,其中Header包含了一些关键信息,如Frame Type,用于标识不同类型的数据包,如Stream、ACK、Padding、Blocked等。 QUIC协议的实现有许多版本和变种,其中QuicNet是QUIC协议的.NET实现。它与quic-transport草案的第32版保持一致,并且还未提供其他相关草案的实现,如quic-tls和快速恢复。 在数据传输方面,QUIC协议和TCP一样利用滑动窗口机制来实现流量控制。当发送端收到接收端的ACK帧时,窗口会向右滑动,从而发送新的数据包。不过,与TCP不同的是,QUIC协议具有更好的拥塞控制和流量控制能力,可以更有效地管理网络中的数据传输。 综上所述,QUIC是一种基于UDP的传输协议,用于提供安全且快速的互联网连接。它具有低延迟和优秀的拥塞控制能力,并采用滑动窗口机制实现流量控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [QUIC协议详解](https://blog.csdn.net/weixin_41821317/article/details/122993082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Quic.NET:QUIC协议的.NET C#实现-Google的实验性传输层](https://download.csdn.net/download/weixin_42127775/18481734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值