速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

基于 QUIC 协议的 HTTP/3 正式发布

  • 2022-06-08
  • 本文字数:761 字

    阅读完需:约 2 分钟

基于QUIC协议的HTTP/3正式发布

6 月 6 日,IETF QUIC 和 HTTP 工作组成员 Robin Marx 宣布,经过 5 年的努力,HTTP/3 被标准化为 RFC 9114,这是 HTTP 超文本传输协议的第三个主要版本。同时,HTTP/2 也更新为 RFC 9113标准,HTTP/1.1 和通用 HTTP 语义和缓存概念在 RFC 9110-9112 中也得到了加强。

 

HTTP/3 采用了谷歌多年探索的基于 UDP 的 QUIC 协议,原名叫 HTTP-over-QUIC,在 2018 年被 IETF 批准更名为 HTTP/3。目前,Cloudflare、Google Chrome、Firefox Nightly 均表示支持 HTTP/3。

 

HTTP/1.1 使用空格分隔的文本字段来传递 HTTP 消息。虽然这些交换是人类可读的,但使用空格进行消息格式化会导致解析复杂性和对变体行为的过度容忍。HTTP/1.1 不包含多路复用层,因此经常使用多个 TCP 连接来并行处理请求。然而,这对拥塞控制和网络效率有负面影响。

 

到了HTTP/2,引入了二进制帧和多路复用层,在不修改传输层的情况下改善了延迟。但是,由于 HTTP/2 多路复用的并行特性对 TCP 的丢失恢复机制不可见,因此丢失或重新排序的数据包会导致所有活动事务都经历停顿,无论该事务是否直接受到丢失数据包的影响。

 

为了解决 HTTP/2 中存在的队头阻塞问题,HTTP/3 不再基于 TCP 建立,而是基于 Google 提出基于 UDP 实现的开源协议 QUIC,使用 stream 进一步扩展了 HTTP/2 的多路复用,并在阻塞控制、头部压缩等方面做了提升。

 

QUIC 是一种通用传输协议,与 TCP 非常相似,除了 HTTP 和网页加载之外,它还可以并且将用于更多场景,例如 DNS、SSH、SMB、RTP 等都可以在 QUIC 上运行。

 

那么,QUIC 究竟是如何改进 TCP 的呢?根据 Marx 介绍,主要可归结为四个方面:QUIC 与 TLS 深度集成、QUIC 支持多个独立的字节流、QUIC 使用连接 ID、QUIC 使用帧(frame)。为了更容易部署, QUIC 运行在 UDP 协议之上(大多数网络设备也支持),默认情况下几乎完全加密并使用灵活的帧机制。

 

2022-06-08 18:156757

评论

发布
暂无评论
发现更多内容

模块八-设计消息队列存储消息数据的 MySQL 表格

deng

架构实战营

一文搞懂ReentrantLock的公平锁和非公平锁

Ayue、

ReentrantLock 公平锁 非公平锁

Trino应用Iceberg Catalog写入数据原理分析

漫长的白日梦

数据湖 iceberg trino

DataPipeline正式加入中国信通院数据库应用创新实验室!

DataPipeline数见科技

数据库 中间件 数据融合 数据管理 信通院

全链路压测系列(二):方案调研和项目立项

老张

性能测试 全链路压测

学生管理系统详细架构设计

swallowluo

架构实战营 「架构实战营」

设计千万级学生管理系统的考试试卷存储方案

ren

#架构实战营

微服务架构 | 怎样解决超大附件分片上传?

码农架构

微服务架构 springboot 断点续传 SpringCloud 大文件断点续传

微服务划分的思考

无心水

微服务 微服务架构 SpringCloud 注册中心 微服务划分

PassJava 开源 (七) :Spring Cloud 整合 OpenFeign 实现声明式远程调用

悟空聊架构

28天写作 passjava 悟空聊架构 12月日更 openfeign

学习方法

Tiger

28天写作

全链路压测系列(三):技术改造和测试验证

老张

性能测试 全链路压测

如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查

汪子熙

HTTP fiddler 28天写作 网络抓包 12月日更

MySQL的死锁系列- 锁的类型以及加锁原理

程序员历小冰

MySQL 死锁 28天写作 12月日更

Linux 命令 man 全知全会

hedzr

Linux less man man-pages

[架构实战营]模块4作业

Vincent

「架构实战营」

给弟弟的信第24封|盲目的努力没有用

大菠萝

28天写作

关于分布式系统共识的思考

yuexin_tech

分布式

Linux之whereis命令

入门小站

Linux

区块链在电动车产业中的角色

CECBC

Golang中的runtime包

liuzhen007

28天写作 12月日更

Gin-Vue-Admin 使用 gin+vue 进行极速开发的全栈开发基础平台【gva 第二节】

坚果

28天写作 Vue 3 Go 语言 12月日更

元宇宙100讲-0x009

hackstoic

元宇宙

性能基础之理解Linux系统平均负载和CPU使用率

zuozewei

Linux 性能测试 计算机原理 12月日更

架构训练营 -- 模块四

LJK

#架构训练营

在线JSON转Go Struct工具

入门小站

工具

再见 Typora!这个开源的 Markdown 编辑器爱了!

JackTian

程序员 写作 Typora 编辑器 markdown编辑器

什么是 DID 身份,为什么需要 DID

Rayjun

区块链 did

全链路压测系列(一):认识全链路压测

老张

性能测试 全链路压测

Reactor模式和Java NIO

Java·课代表

Java reactor 设计模式 网络编程 nio

语音信号的时域分析

轻口味

28天写作 12月日更

基于QUIC协议的HTTP/3正式发布_文化 & 方法_褚杏娟_InfoQ精选文章