QUIC协议文档翻译——什么是QUIC
原文地址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的更多相关文章
- Google将向IETF标准提交QUIC协议提案
Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...
- 让互联网更快:新一代QUIC协议在腾讯的技术实践分享
本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度,特别是弱网络的时候能够提升 20% 以上的访问速度. 如 ...
- QUIC协议的分析,性能测试以及在QQ会员实践
WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...
- QUIC协议原理分析(转)
之前深入了解了一下HTTP1.1.2.0.SPDY等协议,发现HTTP层怎么优化,始终要面对TCP本身的问题.于是了解到了QUIC,这里分享一篇之前找到的有意义的文章. 原创地址:https://mp ...
- Google Quic协议
0x01 Quic QUIC协议于2012年实现,2015年提交RFC草案,它是Goolge为了解决当今WEB应用常见的传输层和应用层问题而提出的,从分层结构上可以看做是TCP+TLS+HTTP2的集 ...
- QUIC协议
QUIC协议 QUIC协议参考网址 https://www.chromium.org/quic 既生瑜,何生亮? QUIC的特性 提供可靠传输 减少连接建立的时间 改善拥塞控制 多路复用 转发错误连接 ...
- caddy quic 协议试用&& 几个问题
备注: caddy 具体的安装就不介绍,quic 协议也不介绍了 1. 启用协议,比较简单 /usr/local/bin/caddy -log stdout -quic -conf=/et ...
- 一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
- 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
随机推荐
- 简单的DbContext工厂类(EFCore)
前言 根据appsettings.json的中配置的数据库类型,使用工厂模式创建DbContext 代码实现 appsettings.json中的配置项 //使用的数据库类型 "Server ...
- 转 7 jmeter之参数化
7 jmeter之参数化 badboy里参数化(前面4 jmeter badboy脚本开发技术详解已讲过) jmeter里参数化-1 用户参数 1.打开badboy工具,点击红色按钮开始录制,在地 ...
- react空标签之The React Fragment
如何使用React.Fragment创建不可见的HTML标签 在研究Ant Design Pro项目中,在登录模块中,有React.Fragment的实际应用 接下来先看一个小demo,将返回值包装在 ...
- SparkMLlib—协同过滤推荐算法,电影推荐系统,物品喜好推荐
SparkMLlib-协同过滤推荐算法,电影推荐系统,物品喜好推荐 一.协同过滤 1.1 显示vs隐式反馈 1.2 实例介绍 1.2.1 数据说明 评分数据说明(ratings.data) 用户信息( ...
- SparkSql 数据类型转换
SparkSql 数据类型转换 1.SparkSql数据类型 1.1数字类型 1.2复杂类型 2.Spark Sql数据类型和Scala数据类型对比 3.Spark Sql数据类型转换案例 3.1获取 ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- 故障-因为MAC地址冲突造成的故障
1.问题分析与解决 1.1 症状与起因 问题症状: 访问卡慢,负载并不高 起因: 笔者有一部分物理机做了虚拟化,由于体量小就直接通过命令行工具创建,在创建时并没有通过kvm的clone命令,而是手工修 ...
- 关于.NET中迭代器的实现以及集合扩展方法的理解
在C#中所有的数据结构类型都实现IEnumerable或IEnumerable<T>接口(实现迭代器模式),可以实现对集合遍历(集合元素顺序访问).换句话可以这么说,只要实现上面这两个接口 ...
- TypeScript中的private、protected
首先我们要清楚 private . protected 现阶段只是javascript中的保留字(Reserved words),而非关键字(Keywords ).因此TypeScript中的纯类型声 ...
- 【NOIP 2015 D1 T2】信息传递(图论--带权并查集/bfs)
题目:有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学.游戏开始时,每人都只知道自己的生日.之后每一轮中, ...