IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> QUIC协议详解 -> 正文阅读

[系统运维]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. 连接迁移:网络切换不会中断数据传输

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:36:34  更:2022-02-19 01:39:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:01:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码