长沙大型网站设计公司,富阳网站建设报价,网站如何分页,潍坊建设公司网站一#xff1a;QUIC协议导入 QUIC是一个通用的传输层网络协议#xff0c;最初由Google的Jim Roskind设计#xff0c;2012年实现并部署#xff0c;2013年随着实验范围的扩大而公开发布#xff0c;并向IETF描述。虽然长期处于互联网草案阶段#xff0c;但在从Chrome浏览器到…一QUIC协议导入 QUIC是一个通用的传输层网络协议最初由Google的Jim Roskind设计2012年实现并部署2013年随着实验范围的扩大而公开发布并向IETF描述。虽然长期处于互联网草案阶段但在从Chrome浏览器到Google服务器的所有连接中超过一半的连接都使用了QUIC。Microsoft Edge、Firefox和Safari都支持它但默认情况下没有启用。其于RFC9000中正式推出标准化版本。 在QUIC标准协议出来之前各个厂家可以基于UDP开发自己版本的QUIC国外的如Google的gquic_q023gquic_q043gquic_q046等QUIC版本Facebook的mvfstQUIC版本国内的如腾讯旗下的微信QUIC版本。基本上早期QUIC的定制玩家都是大厂也只有大厂才有这样的业务定制需求。 2015年6月QUIC规范的互联网草案提交给IETF进行标准化。2016年成立了QUIC工作组。2018年10月IETF的HTTP工作组和QUIC工作组共同决定将QUIC上的HTTP映射称为 HTTP/3以提前使其成为全球标准。2021年5月IETF公布RFC9000QUIC规范推出了标准化版本。标准出来之前的QUIC版本并不会因此而消失预计会有相当长的一段时间为共存直至标准版本统一江湖。
二QUIC协议简介 QUIC 的英文全称为Quick UDP Internet Connections。从名字上看大概也能看出来主打一个快字是一种基于UDP的全新的低延时互联网传输协议 基于TCPUDP传输层的协议已经发展了多年协议栈集成在操作系统中已经是非常成熟的协议谷歌为什么要另辟蹊径自己开发一种基于UDP的传输协议呢。QUIC解决了现存协议哪些短板QUIC自身的优势又有哪些 众所周知HTTP统一江湖后从最初的HTTP/0.9经历了HTTP/1.xHTTP/2到最新的HTTP/3这几个大的更新版本。在HTTP/3版本之前HTTP都是基于TCP协议进行上层扩展和优化而伴随着移动互联网的发展网络交互场景越来越丰富并要求及时性传统TCP固有的性能瓶颈和短板在某些场景下越来越不能满足需求原因有以下几点
1必不可少的握手带来的时延消耗 TCP建立连接的三次握手必然带来1个RTT可以理解为网络延迟的延时消耗。另外TLS加密协议需要双方交换加密参数来进行加密它需要2个RTT。所以HTTP2需要3个RTT的时间才能建立一个完整的传输链路。对于直播以及抖音刷小视频等需要首帧秒开场景握手延迟太大
2多路复用的队首阻塞 在HTTP1.0和HTTP1.1中下个请求必须在前一个请求返回后才能发出导致带宽无法被充分利用后续请求被阻塞HTTP 1.1 尝试使用流水线Pipelining技术但先天 FIFO先进先出机制导致当前请求的执行依赖于上一个请求执行的完成容易引起队头阻塞并没有从根本上解决问题。 HTTP2在之前版本的基础上针对上面的场景进行了改量提出了多路复用HTTP2重新定义底层 http 语义映射允许同一个连接上使用请求和响应双向数据流。同一域名只需占用一个 TCP 连接通过数据流Stream以帧为基本协议单位避免了因频繁创建连接产生的延迟减少了内存消耗提升了使用性能并行请求且慢的请求或先发送的请求不会阻塞其他请求的返回。 多路复用解决了HTTP1.1中pipelining的不足但是多路复用必须要在网络条件良好不经常丢包的网络条件下才能发挥其最大优势。若其中一条流的中间某个报文丢失后面其他流的数据都会被阻塞直到丢失的流数据重传完成其他流才能被继续传输。即使接收端已经收到之后流的数据包HTTP协议也不会通知应用层去处理。而对于 HTTP 1.1 来说可以开启多个 TCP 连接出现这种情况反到只会影响其中一个连接剩余的 TCP 连接还可以正常传输数据。在网络不好的情况下HTTP 2的表现反倒不如HTTP 1.1了。
3TCP协议的更新滞后 TCP协议是集成在操作系统的内核内这就带来了TCP协议的一些更新很难被快速推广。因为你总不能要求用户因为TCP新的协议特性去升级操作系统。QUIC在应用层之上基于UDP实现丢包恢复拥塞控制加解密多路复用等功能将TCP相比如UDP的优势功能放到应用层的实现里既能优化握手延迟同时又完全解决内核协议更新滞后问题。解决了推广的问题那协议的生命力会更加有活力。
基于以上TCP的短板QUIC进行了全方位的改进
1低时延连接 QUIC建连时间大约0~1 RTT在两方面做了优化 1传输层使用了UDP减少了1个RTT三次握手的延迟。 2加密协议采用了TLS 协议的最新版本TLS 1.3相对之前的TLS 1.1-1.2TLS1.3允许客户端无需等待TLS握手完成就开始发送应用程序数据的操作可以支持1 RTT和0RTT。 对于QUIC协议客户端第一次建连的握手协商需1-RTT而已建连的客户端重新建连可以使用之前协商好的缓存信息来恢复TLS连接仅需0-RTT时间。因此QUIC建连时间大部分0-RTT、极少部分1-RTT相比HTTPS的3-RTT的建连具有极大的优势。
2连接迁移 一条 TCP 连接是由四元组标识的源 IP源端口目的 IP目的端口。什么叫连接迁移呢就是当其中任何一个元素发生变化时这条连接依然维持着能够保持业务逻辑不中断。当然这里面主要关注的是客户端的变化因为客户端不可控并且网络环境经常发生变化而服务端的 IP 和端口一般都是固定的。比如下班了在路上给异地恋的女友打电话走到家门前会自动连上家里的wifi这时候微信电话会有个短暂的中断这是因为WIFI 和 4G/5G 移动网络切换时客户端的 IP 会发生变化需要重新建立和服务端的 TCP 连接。 QUIC支持连接迁移它用一个一般是64位随机数ConnectionID标识连接这样即使源的IP或端口发生变化只要ConnectionID一致连接都可以保持不会发生切断重连
3无队头阻塞 QUIC支持多路复用相比HTTP/2QUIC的流与流之间完全隔离的互相没有时序依赖。如果某个流出现丢包不会阻塞其他流数据的传输和应用层处理所以这个方案并不会造成队首阻塞。
4灵活的拥塞控制 QUIC 的传输控制不再依赖内核的拥塞控制算法而是实现在应用层上这意味着我们根据不同的业务场景实现和配置不同的拥塞控制算法以及参数。用户可以插拔式选择像Cubic、BBR、Reno等拥塞控制算法也可以根据具体的场景定制私有算法。
5前向纠错FEC QUIC支持前向纠错弱网丢包环境下动态的增加一些FEC数据包可以减少重传次数提升传输效率。