当前位置: 首页 > news >正文

QUIC浅析

QUIC(Quick UDP Internet Connections)是由Google主导设计、IETF标准化的下一代传输层协议,旨在解决TCP在现代网络环境下的性能瓶颈。

一、TCP的局限性

为什么需要QUIC?。TCP作为传统传输协议,存在两个问题:

(1) 连接建立延迟高

TCP需三次握手建立连接,HTTPS在此基础上还需TLS握手(通常1-2个RTT),总计耗时显著。尽管TLS 1.3支持0-RTT,但TCP握手仍不可免。

(2) 队头阻塞(Head-of-Line Blocking)

TCP以字节流为单位传输,单个数据包丢失会导致后续所有数据缓存等待重传,即使其他流的数据已到达,应用层也无法使用。

QUIC通过基于UDP重构传输逻辑,从根本上解决这些问题。

二、QUIC核心特性与技术实现

  1. 基于UDP,实现快速连接建立
    QUIC运行在UDP之上,规避了内核TCP协议栈的限制,允许在用户空间实现协议逻辑。其最大优势在于加密与连接建立的合并
  • 1-RTT握手:首次连接时,QUIC将传输层与加密层(TLS 1.3)握手合并,客户端在第一条消息中携带密钥材料,服务器响应时即可开始发送加密数据,实现1-RTT安全连接。
  • 0-RTT快速重连:若客户端与服务器曾通信,可利用之前协商的密钥直接发送应用数据,实现0-RTT,显著提升重复访问性能(如页面刷新、APP重连)。
  • 注:强调“0-RTT并非无安全风险”,其存在重放攻击(replay attack)隐患,需应用层设计防重放机制(如一次性令牌)。
  1. 多路复用与无队头阻塞
    QUIC在协议层原生支持多路复用(Multiplexing),每个HTTP请求映射为独立的QUIC流(Stream)。每个流独立编号和确认,一个流的数据包丢失仅影响该流,其他流可继续传输与交付,彻底消除TCP的队头阻塞问题。支持单向流与双向流,并在连接级和流级分别实施流量控制,避免接收端缓冲区溢出。
  2. 连接迁移(Connection Migration)
    传统TCP依赖四元组(源IP、源端口、目的IP、目的端口)标识连接。当设备网络切换(如Wi-Fi转4G),IP变更导致TCP连接中断需重新握手。QUIC引入连接ID(Connection ID) 作为唯一标识。即使IP或端口变化,只要Connection ID不变,服务器即可识别原连接,实现无缝迁移。
  3. 前向纠错(FEC)与改进的拥塞控制
    QUIC支持在数据包中添加冗余信息,允许接收方在少量丢包时无需重传即可恢复数据,适用于高丢包场景。在用户空间实现拥塞控制算法(如Google的BBR、Cubic),可动态更新而无需操作系统升级。

三、QUIC与HTTP/3

HTTP/3 是HTTP协议的第三个主要版本,其底层传输协议从TCP变为QUIC。
HTTP/3继承了HTTP/2的多路复用、头部压缩(QPACK)等特性,并通过QUIC获得低延迟、抗队头阻塞等优势。

注意:QUIC ≠ HTTP/3。QUIC是传输层协议,也可承载其他应用协议(DNS、MQTT)。

http://www.lryc.cn/news/623752.html

相关文章:

  • C++ 标准模板库 (^^ゞ 致敬 STL 创始人 Alexander Stepanov
  • 笔记本电脑wifi小图标不见了 或者 蓝牙功能消失、电脑开不开机解决方法
  • 基于飞算JavaAI的可视化数据分析集成系统项目实践:从需求到落地的全流程解析
  • Shell脚本-while循环语法结构
  • ACPI TABLE 方式加载device driver--以spi controller为例
  • 字节 Golang 大模型应用开发框架 Eino简介
  • Pulsar存储计算分离架构设计之存储层BookKeeper(上)
  • 在线编程题目之小试牛刀
  • C#高级语法_委托
  • Windows平台Frida逆向分析环境完整搭建指南
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • 发票识别工具,合并PDF提取信息
  • JavaScript字符串详解
  • 001.Redis 简介及安装
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • Mac(四)自定义按键工具 Hammerspoon 的安装和使用
  • vue封装请求拦截器 响应拦截器
  • SCAI采用公平发射机制成功登陆LetsBonk,60%代币供应量已锁仓
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 数学建模 14 中心对数比变换
  • 原子操作及基于原子操作的shared_ptr实现
  • Leaflet赋能:WebGIS视角下的省域区县天气可视化实战攻略
  • 数据结构:二叉搜索树(Binary Search Tree)
  • ansible管理变量和事实
  • 《Python学习之文件操作:从入门到精通》
  • 剑指offer第2版——面试题5:替换空格
  • Java注解学习记录
  • 26. 值传递和引用传递的区别的什么?为什么说Java中只有值传递
  • 大模型对齐算法合集(一)
  • Zemax 中的透镜设计 - 像差理论