原文地址https://docs.google.com/document/d/1gY9-YNDNAB1eip-RTPbqphgySwSNSDHLq9D5Bty4FSU/edit

QUIC是一个谷歌提出的新的互联网协议。

QUIC解决出现在现在网络协议的一些传输层和应用层的问题,而且几乎不需要应用更改。QUIC和TCP+TLS+HTTP2十分相似,但是基于UDP实现。使用QUIC作为一个独立的协议可以做到一些别的协议做不到的创新,因为它们受到传统客户端和中间件的阻碍。

和TCP+TLS+HTTP2相比,QUIC的核心优势有以下几点:

  • 连接建立延迟
  • 提升拥塞控制
  • 无需排头阻塞的多路复用
  • 向前纠错
  • 连接迁移

连接建立

简单来说,在发送有效负载前,和TCP+TLS的1~3rt相比,QUIC通常需要0rt。

当QUIC客户端第一次链接到服务端时,客户端必须执行1rt的握手来获取完成握手的所有必要信息。客户端发送一个CHLO,服务端返回一个带有客户端用来继续执行的拒信,包括源地址令牌和服务器证书。下次客户端发送CHLO时,可以使用上次连接缓存的证书来立刻返回一个加密的消息。

拥塞控制

QUIC有可插拔的拥塞控制,而且比TCP给拥塞控制提供更丰富的信息。这允许一个QUIC发送者识别重发的ACK和原始的ACK避免TCP的重发歧义问题。QUIC ACK还明确传输数据包发送和接收的延时,以及单调增加的序列号。这允许准确的rt计算。

最后,QUIC的ACK帧支持多达256NACK范围,因此QUIC比TCP(带SACK)在重新排序上更有弹性,而且能够在重新排序和丢失时在线路上保存更多字节。客户端和服务端都可以准确地知道对方哪个包收到了。

多路复用

基于TCP的HTTP2更大的一个问题是排头阻塞。应用视TCP连接为一个字节流。当一个TCP包丢失,HTTP2连接上没有数据流向前推进,直到包被重传而且被远端接受——甚至当这些数据流已经到达而且在缓存等待。

由于QUIC一开始就是为多路复用操作设计的,因此传输单个流数据丢失的数据报通常只影响该特定的流。每个流的帧可以立即被分发并且在应用推进。

向前纠错

为了在不等待重传情况下从丢包中恢复,QUIC可以用FEC包补充一组包。很像RAID-4,在FEC组里包含部分FEC包。如果组中的一个包丢失,则可以从FEC包和组中剩余的包恢复这个包。发送者可以决定是否发送FEC包来优化特殊的场景(例如,一个请求的开始和结束)。

连接迁移

QUIC连接被一个64位的连接ID识别,被客户端随机生成。相比之下,TCP连接被一个由源地址,源端口,目标地址,目标端口的4元组识别。这意味着如果一个客户端改变地址(例如,从WI-FI切到移动网络)或者端口(如果一个NAT丢失并且这个端口连接重新绑定),任何可用的TPC连接不再有效。当一个QUIC客户端改变IP地址,它可以在不打断执行中的请求的情况下从这个新的IP地址使用这个老的连接ID。

QUIC协议文档翻译——什么是QUIC的更多相关文章

  1. Google将向IETF标准提交QUIC协议提案

    Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...

  2. 让互联网更快:新一代QUIC协议在腾讯的技术实践分享

    本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度,特别是弱网络的时候能够提升 20% 以上的访问速度. 如 ...

  3. QUIC协议的分析,性能测试以及在QQ会员实践

    WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...

  4. QUIC协议原理分析(转)

    之前深入了解了一下HTTP1.1.2.0.SPDY等协议,发现HTTP层怎么优化,始终要面对TCP本身的问题.于是了解到了QUIC,这里分享一篇之前找到的有意义的文章. 原创地址:https://mp ...

  5. Google Quic协议

    0x01 Quic QUIC协议于2012年实现,2015年提交RFC草案,它是Goolge为了解决当今WEB应用常见的传输层和应用层问题而提出的,从分层结构上可以看做是TCP+TLS+HTTP2的集 ...

  6. QUIC协议

    QUIC协议 QUIC协议参考网址 https://www.chromium.org/quic 既生瑜,何生亮? QUIC的特性 提供可靠传输 减少连接建立的时间 改善拥塞控制 多路复用 转发错误连接 ...

  7. caddy quic 协议试用&& 几个问题

    备注:    caddy  具体的安装就不介绍,quic 协议也不介绍了   1. 启用协议,比较简单 /usr/local/bin/caddy -log stdout -quic -conf=/et ...

  8. 一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

  9. 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

随机推荐

  1. Maven + springboot + mybatis 构建多模块工程

    废话不说先上最终效果:创建一个空项目,再创建一个父项目用来管理各模块并维护各模块关系,简要说明如下: parent模块:主要用来管理以下各模块,和各模块涉及的jar包版本和boot项目入口级的的依赖管 ...

  2. 策略模式 VS 状态模式

    策略模式 VS 状态模式 策略模式 VS 状态模式 | 菜鸟教程 https://www.runoob.com/w3cnote/state-vs-strategy.html

  3. Flash 终将谢幕:微软将于年底停止对 Flash 的支持

    近日,微软宣布将于今年 12 月终止对 Adobe Flash Player 的支持,届时,微软旗下所有浏览器都将无法使用 Flash,Adobe 也不会在今年 12 月后发布安全更新.早在 2017 ...

  4. UVA11694 Gokigen Naname题解

    目录 写在前面 Solution Code 写在前面 UVA的题需要自己读入一个 \(T\) 组数据,别被样例给迷惑了 Solution 每个格子只有两种填法且 \(n \le 7\),暴力搜索两种填 ...

  5. 知道 Redis-Cluster 么?说说其中可能不可用的情况

    Redis 集群模式简述 一个集群模式的官方推荐最小最佳实践方案是 6 个节点,3 个 Master 3 个 Slave 的模式,如 图00 所示. key 分槽与转发机制 Redis 将键空间分为了 ...

  6. 深度学习论文翻译解析(十八):MobileNetV2: Inverted Residuals and Linear Bottlenecks

    论文标题:MobileNetV2: Inverted Residuals and Linear Bottlenecks 论文作者:Mark Sandler Andrew Howard Menglong ...

  7. HTML5 学习表格应用

    <table> <tr> ---tr 定义行 <td>第1个单元格的内容</td> ----td 定义列 <td>第2个单元格的内容< ...

  8. Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验

    Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...

  9. redis防止重复提交

    public interface DistributedLock { boolean getLock(String var1, String var2, int var3);//加锁 void unL ...

  10. MyBatis框架使用 —— 传递多个参数的方式

    引言 目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate.使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的.如何传递多参应对不同的场景也 ...