Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >双十一聊聊低时延利器:QUIC

双十一聊聊低时延利器:QUIC

作者头像
架构精进之路
发布于 2020-11-17 02:44:57
发布于 2020-11-17 02:44:57
1.6K0
举报
文章被收录于专栏:架构精进之路架构精进之路

又值一年一度的“双十一购物节”之际,大家都在乐此不疲的聊着大流量高并发场景下的处理解决方案。

提到抢购,总结就一个“快”字,筛选要快,下单要快,付款要快... 一切顺利操作之后,才有可能秒到足够便宜的好货。今天我们也围绕着“快”,来跟大家聊一下低时延利器:QUIC

1. 性能对比试验

在介绍QUIC之前,我们先来做个性能对比试验:我们来分别ping 一下“大型购物”网站:www.taobao.com 和 “大型程序员交友”网站:github.com

  • www.taobao.com
  • github.com

经我们试验发现:taobao 耗时在几十ms级别,而github 却在上百ms级别。

那为什么会有这样的差异呢?我们来分析一下其中存在的原因:

1.1 物理原因和延时

网络和延时的消耗大概分以下几类:

  • 距离远

我们知道光速:30万公里/s,从北京-纽约的距离大概1.4w公里,那往返一次需要花费:107ms。

  • 路由丢包

48TTL,经过16跳路由,每一跳都要处理时间且可能会丢包(大概15%丢包率)

  • 信号转换

光 - 电信的转换消耗

  • 其他不可抗力

例如:内容审查等等

1.2 TCP超时重传

TCP提供一种面向连接的、可靠的字节流服务,其中可靠的保证方法之一就是让从另一端收到的数据。但是数据和确认信号都有可能丢失。

名词解释:

RTT(Round Trip Time):一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值; RTO(Retransmission Time Out):重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传。

RTT和RTO 的关系是:由于网络波动的不确定性,每个RTT都是动态变化的,所以RTO也应随着RTT动态变化。

网络抖动会引起丢包重传,约2-5倍的RTT。

具体介绍请参考:https://blog.csdn.net/whgtheone/article/details/80970292

1.3 HTTP请求

HTTPS 请求存在一定的性能损耗,大致分布如下:

  • TCP握手3次通信,大概消耗约:1.5RTT
  • SSL/TLS握手4次通信,大概消耗约:2RTT
  • HTTP请求&响应,大概消耗约:1RTT

完成整个HTTP请,总计消耗量约:4.5RTT。

2. QUIC是什么?

QUIC 是 Quick UDP Internet Connections 的缩写,谷歌发明的新传输协议。与 TCP 相比,QUIC 可以减少延迟。QUIC 协议可以在 1 到 2 个数据包(取决于连接的服务器是新的还是已知的)内,完成连接的创建(包括 TLS)。

主要的特点包括:

  • 0-1RTT完成一次加密的请求与响应
  • IETF标准
  • HTTP3标准
  • Chrome有20%的流量使用QUIC

从表面上看:QUIC 非常类似于在 UDP 上实现的 TCP + TLS + HTTP/2。

由于 TCP 是在操作系统内核和中间件固件中实现的,因此对 TCP 进行重大更改几乎是不可能的(TCP 协议栈通常由操作系统实现,如 LinuxWindows 内核或者其他移动设备操作系统)。

修改 TCP 协议是一项浩大的工程,因为每种设备、系统的实现都需要更新。但是,由于 QUIC 建立在 UDP 之上,因此没有这种限制。

和 TCP 相反,UDP 协议是无连接协议。客户端发出 UDP 数据包后,只能“假设”这个数据包已经被服务端接收。这样的好处是在网络传输层无需对数据包进行确认,但存在的问题就是为了确保数据传输的可靠性,应用层协议需要自己完成包传输情况的确认。

QUIC 与现有 TCP + TLS + HTTP/2 方案相比,有以下几点主要特征:

1)利用缓存,显著减少连接建立时间;

2)改善拥塞控制,拥塞控制从内核空间到用户空间;

3)没有 head of line 阻塞的多路复用;

4)前向纠错,减少重传;

5)连接平滑迁移,网络状态的变更不会影响连接断线

从图上可以看出,QUIC 底层通过 UDP 协议替代了 TCP,上层只需要一层用于和远程服务器交互的 HTTP/2 API。这是因为 QUIC 协议已经包含了多路复用和连接管理,HTTP API 只需要完成 HTTP 协议的解析即可。

3. 开启通讯发展新时代

QUIC 协议开创性的使用了 UDP 协议作为底层传输协议,通过各种方式减少了网络延迟

相信 QUIC 能够可以在不远的未来,开启通讯行业发展的新时代。

  • HTTP3,弱网环境下也可以流畅访问了,未来3-5年内可能会普及
  • 低延时直播,RTMP over QUIC,延时从2s降低到800ms
  • 即时通信(QQ、WeChat目前类似email,存在一定的延迟,还不是真正意义上的通信),网络游戏以及物联网(远程设备网络控制及通信)等都会变得有可能。

虽然目前 QUIC 协议已经运行在一些较大的网站上,但离大范围普及还有较长的一段距离,期待 QUIC 协议规范能够成为终稿,并在除了谷歌浏览器之外的其他浏览器和应用服务器中也能够实现。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构精进之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTTP探索之路 - HTTP 1 / HTTP 2 / QUIC
从1989年万维网(www)诞生,HTTP(HyperText Transfer Protocol)经历了众多版本迭代,WebSocket也在期间萌芽。1991年HTTP/0.9被发明;1996年出现了HTTP/1.0;2015年HTTP/2正式发布;2020年HTTP/3或能正式使用。以下将会简单介绍。 一、HTTP 1.1 与 HTTP 2 1.1 HTTP 1.1 的缺陷 高延迟 — 队头阻塞(Head-Of-Line Blocking) 无状态特性 — 阻碍交互 明文传输 — 不安全
用户1097444
2022/06/29
8770
HTTP探索之路 - HTTP 1 / HTTP 2 / QUIC
QUIC协议原理浅解
导语 | QUIC,HTTP3 的传输层实现,是近年来诞生的非常强悍的传输协议,它利用 UDP 解决了当前基于 TCP 协议的 HTTP 的许多问题,提升了在弱网环境下的网络通信体验,下面让我们来一探究竟。文章作者:江炜隆,腾讯云CDN产品研发工程师。 一 、QUIC究竟是什么 1. 什么是QUIC? QUIC(Quick UDP Internet Connection)是谷歌推出的一套基于 UDP 的传输协议,它实现了 TCP + HTTPS + HTTP/2 的功能,目的是保证可靠性的同时降低
腾讯云开发者
2021/03/16
4.1K0
一文读懂 HTTP/1HTTP/2HTTP/3
作者:charryhuang,腾讯 CSIG 前端开发工程师 从 1989 年万维网(www)诞生,HTTP(HyperText Transfer Protocol)经历了众多版本迭代,WebSocket 也在期间萌芽。1991 年 HTTP0.9 被发明。1996 年出现了 HTTP1.0。2015 年 HTTP2 正式发布。2020 年 HTTP3 或能正式使用。以下将会简单介绍。 HTTP1.1 与 HTTP2 HTTP1.1 的缺陷 高延迟 — 队头阻塞(Head-Of-Line Blocki
腾讯技术工程官方号
2020/02/10
1.5K0
一文读懂 HTTP/1HTTP/2HTTP/3
QUIC:下一代通信协议
一. 前言 自 2015 年以来,QUIC 协议开始在 IETF 进行标准化并被国内外各大厂商相继落地。 鉴于 QUIC 具备“0RTT 建连”、“支持连接迁移”等诸多优势,即将成为下一代互联网协议。 阅读完本文你将了解和学习到: HTTP协议发展史 HTTP各版本存在的问题,以及各版本解决了哪些问题 QUIC协议特性 再也不怕面试官问HTTP相关的问题了! 行文思路: 从历史使用最广泛的HTTP1.1开始,介绍各版本存在的问题,以及新版本如何解决旧版本存在的问题 二. HTTP协议发展史 HTTP
QQ音乐前端团队
2021/11/22
1K0
HTTP3 RFC 9114 发布,深入剖析HTTP3协议
HTTP3是在保持QUIC稳定性的同事使用UDP来实现高速度, 同时又不会牺牲TLS的安全性.
肉眼品世界
2022/06/15
1.2K0
HTTP3 RFC 9114 发布,深入剖析HTTP3协议
AXP-QUIC:自适应X路QUIC网络传输加速
导语:  腾讯云即时通信IM实现了一种网络自适应的X路QUIC传输加速技术AXP-QUIC(Adaptive X-PATH QUIC),已应用于IM SDK客户端到服务端的数据传输。该技术建立了一套客户端弱网自评估模型,根据网络链路的RTT,丢包率,吞吐量,并结合主动探测,判断终端当前是否处于弱网络环境。同时将QUIC协议和多通道传输技术相结合,根据终端所处的网络环境,实时自动决定切换网络链路或使用多链路进行传输。通过AXP-QUIC技术,即时通信IM能够在70%丢包的弱网络环境下,保证消息100%可靠传输
腾讯云音视频
2022/12/10
1.4K0
AXP-QUIC:自适应X路QUIC网络传输加速
[计算机网络]课程论文:万字长文详解QUIC协议,为什么有了TCP我们还需要QUIC?
在三十年前,我们见证了显卡和网卡作为CPU的辅助外设的时代。然而,随着技术的发展,这些外设逐渐演变成了核心组件,GPU和SmartNIC现在在某些应用场景中扮演着类似CPU的角色。这种转变反映了硬件技术的进步和应用需求的变化。
程序员洲洲
2024/06/07
4880
[计算机网络]课程论文:万字长文详解QUIC协议,为什么有了TCP我们还需要QUIC?
QUIC之拥塞控制和0-RTT连接建立
 点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 ---- 翻译、编辑:Alex 技术审校:刘连响 本文来自Smashing Magazine,原文链接: https://www.smashingmagazine.com/2021/08/http3-performance-improvements-part2/ QUIC Robin讲HTTP/3 #003# 速览: 在经过五年的开发之后,新的HTTP/3协议终于接近尾声。让我们一起深入
LiveVideoStack
2022/09/14
8680
QUIC之拥塞控制和0-RTT连接建立
视屏面试传输协议到底是TCP还是UDP
又是一年一度的秋季校招开始了,以往的校招各个公司都会在公司现场或者学校现场安排学生进行现场面试?但是今年由于疫情的原因,不允许让同学在现场进行一个面试,所以今年的面试形式就从线下转到了线上,面试形式的转变,但是我们考核学生的方式依旧没有转变。
用户5397975
2020/09/01
2.9K0
视屏面试传输协议到底是TCP还是UDP
字节一面:如何用 UDP 实现可靠传输?
我记得之前在群里看到,有位读者字节一面的时候被问到:「如何基于 UDP 协议实现可靠传输?」
小林coding
2022/05/21
1.8K0
字节一面:如何用 UDP 实现可靠传输?
QUIC 和 HTTP/3:提升网络性能的关键技术
QUIC(Quick UDP Internet Connections)是一种基于 UDP 的传输层协议,旨在解决 TCP 在高延迟和丢包环境下的性能问题。HTTP/3 则是 HTTP 协议的最新版本,它基于 QUIC 协议而非 TCP,以提供更高效、可靠的网络服务。
陆业聪
2024/09/26
7930
QUIC 和 HTTP/3:提升网络性能的关键技术
未来可期的HTTP/3
2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。此后,凭借着多路复用、头部压缩、服务器推送等优势,HTTP/2 得到了越来越多开发者的青睐,不知不觉的 HTTP 已经发展到了第三代。本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。
Nealyang
2020/06/04
5930
未来可期的HTTP/3
一文读懂 QUIC 协议:更快、更稳、更高效的网络通信
你是否也有这样的困扰:打开 APP 巨耗时、刷剧一直在缓冲、追热搜打不开页面、信号稍微差点就直接加载失败……
深度学习与Python
2023/09/08
7.4K0
一文读懂 QUIC 协议:更快、更稳、更高效的网络通信
天下武功,唯'QUICK'不破,探究QUIC的五大特性及外网表现
QUIC简介 QUIC(Quick UDP Internet Connections)是谷歌提出的一种传输协议,由于其建立在UDP之上,使得相对于TCP之上的SPDY、HTTP2等其他协议,QUIC的可定制和优化的空间更大.在UDP的上层,QUIC提供了可靠、有序、安全、而且更快速的传输服务.目前,在Chrome中有85%以上关于谷歌自有业务的请求响应都是通过QUIC承载,可以说QUIC已经经受住了真实复杂外网环境的考验。因其理论特性及较好的外网表现,HTTP3协议也将以QUIC为原型进行草案。 谷
腾讯移动品质中心TMQ
2019/08/15
1.5K0
天下武功,唯'QUICK'不破,探究QUIC的五大特性及外网表现
HTTP/3发布了,我们来谈谈HTTP/3
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/06/17
7250
HTTP/3发布了,我们来谈谈HTTP/3
QUIC协议的分析,性能测试以及在QQ会员实践
原文链接:http://wetest.qq.com/lab/view/384.html
WeTest质量开放平台团队
2018/05/10
1.8K0
QUIC协议的分析,性能测试以及在QQ会员实践
DH 算法,QUIC协议和HTTP3.0
Diffie和Hellman两位作者于1976年提出了一种的密钥交换协议。这种加密算法主要用于密钥的交换,能够实现了在非安全网络下通信双方密钥的安全建立,从而使通信双方能够使用这个密钥进行消息的加密解密,从而实现通信的安全。
zhangjiqun
2024/12/17
1520
DH 算法,QUIC协议和HTTP3.0
HTTP/3 原理实战
作者:billpchen,腾讯看点前端开发工程师 2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。此后,凭借着多路复用、头部压缩、服务器推送等优势,HTTP/2 得到了越来越多开发者的青睐。不知不觉的 HTTP 已经发展到了第三代,鹅厂也紧跟技术潮流,很多项目也在逐渐使用 HTTP/3。本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。 1. HTTP/3 原理 1.1 HTTP 历史 在介绍 HTTP/3 之前,我们先简单看下
腾讯技术工程官方号
2020/05/27
1.9K0
Quic学习心得
首先看quic的全称是(Quick UDP Internet Connections),一种快速的UDP网络连接。由此可知quic是以UDP协议为基础的快速的网络传输协议。
陌无崖
2020/07/27
1.3K0
甩掉TCP协议的HTTP/3,真的很牛吗?
与HTTP/1.0相比,HTTP/1.1主要有两个新的特性:keepalive和pipelining。
jeanron100
2023/09/18
7910
甩掉TCP协议的HTTP/3,真的很牛吗?
相关推荐
HTTP探索之路 - HTTP 1 / HTTP 2 / QUIC
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档