searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

谷歌浏览器访问QUIC实践

2023-05-18 10:07:22
602
0

一、背景信息:

QUIC由Google自研,2012年部署上线,2013年提交IETF,2021年5月,IETF推出标准版RFC9000。Google推出的QUIC被称为GQUIC,IETF制定的QUIC称为IQUIC。

QUIC的主要优势如下:

1、握手建连更快

QUIC建连时间大约0~1 RTT,在两方面做了优化:

1)传输层使用了UDP,减少了1个RTT三次握手的延迟。

2)加密协议采用了TLS 协议的最新版本TLS 1.3,相对之前的TLS 1.1-1.2,TLS1.3允许客户端无需等待TLS握手完成就开始发送应用程序数据的操作,可以支持1 RTT和0RTT。

对于QUIC协议,客户端第一次建连的握手协商需1-RTT,而已建连的客户端重新建连可以使用之前协商好的缓存信息来恢复TLS连接,仅需0-RTT时间。因此QUIC建连时间大部分0-RTT、极少部分1-RTT,相比HTTPS的3-RTT的建连,具有极大的优势。

2、避免队首阻塞的多路复用

QUIC同样支持多路复用,相比HTTP/2,QUIC的流与流之间完全隔离的,互相没有时序依赖。如果某个流出现丢包,不会阻塞其他流数据的传输和应用层处理,所以这个方案并不会造成队首阻塞。

3、支持连接迁移

当你用手机使用蜂窝网络参加远程会议,当你把网络切换到WLAN时,会议客户端会立马重连,视频同时出现瞬间卡顿。这是因为,TCP采用四元组(包括源IP、源端口、目标地址、目标端口)标识一个连接,在网络切换时,客户端的IP发生变化,TCP连接被瞬间切断然后重连。连接迁移就是当四元组中任一值发生变化时,连接依旧能保持,不中断业务。QUIC支持连接迁移,它用一个(一般是64位随机数)ConnectionID标识连接,这样即使源的IP或端口发生变化,只要ConnectionID一致,连接都可以保持,不会发生切断重连。

4、可插拔的拥塞控制

QUIC是应用层协议,用户可以插拔式选择像Cubic、BBR、Reno等拥塞控制算法,也可以根据具体的场景定制私有算法。

5、前向纠错(FEC)

QUIC支持前向纠错,弱网丢包环境下,动态的增加一些FEC数据包,可以减少重传次数,提升传输效率。

 

二、适用场景

1、图片业务:可降低图片加载时间。

2、短视频业务:可提升视频秒开率,并且降低弱网环境卡顿率。

3、直播业务:可提升播放稳定性,降低因网络波动带来的卡顿率。



三、使用谷歌浏览器访问QUIC实战

1、谷歌浏览器发起QUIC步骤

QUIC属于双边协议,需要客户端同步支持。可以使用Chrome浏览器来访问QUIC网站,或者使用基于Chrome内核的浏览器。目前较新版本的chrome浏览器已默认开启QUIC。

一般情况下,Chrome浏览器和服务器端协商使用QUIC协议要经过如下步骤:

1)首次访问,客户端发出正常的TCP请求

2)服务端如果支持QUIC,会通过响应头部返回alt-svc头部告知浏览器自己支持QUIC及版本号

3)下次访问,客户端同时发起TCP连接和QUIC连接竞速

4)一旦QUIC竞速连接获胜,则后续会采用QUIC协议发送请求

5)如遇网络或服务器不支持QUIC,客户端标记QUIC为broken

6)传输中的QUIC请求立即用TCP重发

7)5min后尝试重试QUIC,下一次尝试增大到10min

8)一旦再次成功采用QUIC并把broken标记取消

 

2、如何判断一个网站是否支持QUIC呢?

可以通过服务器返回的响应头部来判断,当出现响应头部返回alt-svc时,即表示该网站支持QUIC。

示例:alt-svc:h3=":443"; ma=2592000

该行的含义是服务器在443端口开启了QUIC,最大缓存时间是2592000秒(30天),支持的QUIC版本IQUIC。

 

3、查看是否正常使用QUIC

当访问支持QUIC的网站时,可以打开开发者工具(快捷键F12),在Protocol列可以查看其具体的协议,如下图所示:

这里显示的h3表示采用的是IQUIC。

备注:如果没有Protocol列,右键点击Header Options,勾选Protocol列即可。

 

0条评论
0 / 1000
林****娟
4文章数
2粉丝数
林****娟
4 文章 | 2 粉丝
原创

谷歌浏览器访问QUIC实践

2023-05-18 10:07:22
602
0

一、背景信息:

QUIC由Google自研,2012年部署上线,2013年提交IETF,2021年5月,IETF推出标准版RFC9000。Google推出的QUIC被称为GQUIC,IETF制定的QUIC称为IQUIC。

QUIC的主要优势如下:

1、握手建连更快

QUIC建连时间大约0~1 RTT,在两方面做了优化:

1)传输层使用了UDP,减少了1个RTT三次握手的延迟。

2)加密协议采用了TLS 协议的最新版本TLS 1.3,相对之前的TLS 1.1-1.2,TLS1.3允许客户端无需等待TLS握手完成就开始发送应用程序数据的操作,可以支持1 RTT和0RTT。

对于QUIC协议,客户端第一次建连的握手协商需1-RTT,而已建连的客户端重新建连可以使用之前协商好的缓存信息来恢复TLS连接,仅需0-RTT时间。因此QUIC建连时间大部分0-RTT、极少部分1-RTT,相比HTTPS的3-RTT的建连,具有极大的优势。

2、避免队首阻塞的多路复用

QUIC同样支持多路复用,相比HTTP/2,QUIC的流与流之间完全隔离的,互相没有时序依赖。如果某个流出现丢包,不会阻塞其他流数据的传输和应用层处理,所以这个方案并不会造成队首阻塞。

3、支持连接迁移

当你用手机使用蜂窝网络参加远程会议,当你把网络切换到WLAN时,会议客户端会立马重连,视频同时出现瞬间卡顿。这是因为,TCP采用四元组(包括源IP、源端口、目标地址、目标端口)标识一个连接,在网络切换时,客户端的IP发生变化,TCP连接被瞬间切断然后重连。连接迁移就是当四元组中任一值发生变化时,连接依旧能保持,不中断业务。QUIC支持连接迁移,它用一个(一般是64位随机数)ConnectionID标识连接,这样即使源的IP或端口发生变化,只要ConnectionID一致,连接都可以保持,不会发生切断重连。

4、可插拔的拥塞控制

QUIC是应用层协议,用户可以插拔式选择像Cubic、BBR、Reno等拥塞控制算法,也可以根据具体的场景定制私有算法。

5、前向纠错(FEC)

QUIC支持前向纠错,弱网丢包环境下,动态的增加一些FEC数据包,可以减少重传次数,提升传输效率。

 

二、适用场景

1、图片业务:可降低图片加载时间。

2、短视频业务:可提升视频秒开率,并且降低弱网环境卡顿率。

3、直播业务:可提升播放稳定性,降低因网络波动带来的卡顿率。



三、使用谷歌浏览器访问QUIC实战

1、谷歌浏览器发起QUIC步骤

QUIC属于双边协议,需要客户端同步支持。可以使用Chrome浏览器来访问QUIC网站,或者使用基于Chrome内核的浏览器。目前较新版本的chrome浏览器已默认开启QUIC。

一般情况下,Chrome浏览器和服务器端协商使用QUIC协议要经过如下步骤:

1)首次访问,客户端发出正常的TCP请求

2)服务端如果支持QUIC,会通过响应头部返回alt-svc头部告知浏览器自己支持QUIC及版本号

3)下次访问,客户端同时发起TCP连接和QUIC连接竞速

4)一旦QUIC竞速连接获胜,则后续会采用QUIC协议发送请求

5)如遇网络或服务器不支持QUIC,客户端标记QUIC为broken

6)传输中的QUIC请求立即用TCP重发

7)5min后尝试重试QUIC,下一次尝试增大到10min

8)一旦再次成功采用QUIC并把broken标记取消

 

2、如何判断一个网站是否支持QUIC呢?

可以通过服务器返回的响应头部来判断,当出现响应头部返回alt-svc时,即表示该网站支持QUIC。

示例:alt-svc:h3=":443"; ma=2592000

该行的含义是服务器在443端口开启了QUIC,最大缓存时间是2592000秒(30天),支持的QUIC版本IQUIC。

 

3、查看是否正常使用QUIC

当访问支持QUIC的网站时,可以打开开发者工具(快捷键F12),在Protocol列可以查看其具体的协议,如下图所示:

这里显示的h3表示采用的是IQUIC。

备注:如果没有Protocol列,右键点击Header Options,勾选Protocol列即可。

 

文章来自个人专栏
CDN加速相关
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0