Chromium QUIC逻辑

  • 1 背景
  • 2 正文
    • 2.1 针对某个ip:port的请求
    • 2.2 超时逻辑
    • 2.3 回滚逻辑
    • 2.4 30S的QUIC失败等待

1 背景

最近在使用Chromium的网络库Cronet,对其内部QUIC的使用逻辑做了一些总结。

2 正文

2.1 针对某个ip:port的请求

  1. 第一次请求会根据TLS ALPN协议的协商结果以HTTP/1.1或者HTTP/2发起,分析HTTP响应携带的“alt-svc”头,将该ip:port、QUIC端口、ma(max alive,也就是ttl)、服务端支持的QUIC版本等信息记录到本地支持QUIC的服务列表中;
  2. 第二次请求可能仍然会以HTTP/1.1或者HTTP/2发起,但是同时建立一个quic_connection,并触发QUIC的握手、协商,如果成功,则在连接池中缓存该quic_connection,并且Chromium会自动评估是否使用QUIC替换HTTP来请求本次数据;
  3. 后续该域名的所有请求将使用该quic_connection,以QUIC协议传输数据。

2.2 超时逻辑

有两个基本的超时时间:

  1. 握手超时,代表连接发起、握手的超时时间,默认10S;
  2. 空闲超时,代表长时间没有数据传输quic_connection回收的超时时间,协商成功前5S,协商成功后30S。

2.3 回滚逻辑

  1. 一个还未协商成功的quic_connection并不会被使用;
  2. 一个已经协商成功的quic_connection,如果在一次HTTP请求之前UDP被Block,那么在等待空闲超时后,QUIC的数据请求失败,会自动回滚到HTTP(1/2),一旦回滚到HTTP,这个连接将被标记(UDP不可用),不再使用QUIC;
  3. 如果在QUIC数据传输的过程中,UDP被Block,那么在等待空闲超时后,QUIC的数据请求失败,不会被回滚到HTTP,但是下次请求仍然会尝试使用QUIC,因为UDP有可能可用。

2.4 30S的QUIC失败等待

对一次HTTP请求来说,30S是一个漫长的等待,可以考虑将时间改短,付出的代价是quic_connection缓存时间变短,有可能不得不频繁创建新的quic_connection,进行新的握手、协商。

Chromium QUIC逻辑相关推荐

  1. STGW 下一代互联网标准传输协议QUIC大规模运营之路

    作者:wentaomao,腾讯 TEG 后台开发工程师 前言 QUIC 作为互联网下一代标准传输协议,能够明显提升业务访问速度,提升弱网请求成功率以及改善网络变化场景下的平滑体验. STGW 作为公司 ...

  2. QUIC协议(握手过程)简要介绍

    QUIC协议(握手过程)简要介绍 这篇博客可能更多的偏向于密码学方面来进行介绍(csdn关于网络层). 为什么需要QUIC协议 随着当前网络对性能要求的越来越高,有部分公司已经觉得原来的TCP和UDP ...

  3. 快手自研kQUIC:千万级QPS集群是如何实现的?

    近日,快手自研高性能服务器 kQUIC 已全面上线,集群峰值 QPS 突破千万.kQUIC 是快手结合自身业务特点,自研打造的支持 QUIC/HTTP/HTTPS 多协议同层接入的高性能服务器,在短视 ...

  4. QUIC构建1——chromium镜像,clone文件depot_tools的过程+git过程中的问题

    问题1 (1)安装depot_tool超时,的问题,寻找镜像 git clone https://chromium.googlesource.com/chromium/tools/depot_tool ...

  5. Android平台Chromium net中的代理配置信息获取

    在计算机网络中,代理服务器 扮演着发起请求的客户端与服务器之间的中间人的角色.客户端连接到代理服务器,请求一些服务,比如文件,网页,或其它可以从服务器获得的资源,代理服务器以简化和控制复杂度的形式获取 ...

  6. chromium net库设计

    总览 网络栈主要地是一个单线程跨平台的库,主要负责资源获取.它的主要接口是URLRequest和URLRequestContext.URLRequest, 正如它的名字所表明的那样,表示一个URL的请 ...

  7. [翻译]QUIC 与 HTTP/3:太过庞大而致失败?-- 论导致 QUIC 失败的因素

    新的 QUIC 和 HTTP/3 协议即将到来,这是可谓是网络发展的精华所在. 结合过去30年来网络实践中的经验和教训,新一代的协议栈针对性能.隐私.安全和灵活性方面,均有大幅的提升.改进. 当前,关 ...

  8. 实战|QUIC协议助力腾讯业务提速30%

    hi ,大家周五好,之前分享过一篇QUIC在蚂蚁金服落地的文章: 实战|QUIC协议在蚂蚁集团落地 今天我们分析一篇,QUIC在腾讯落地的文章,希望大家了解和学习新技术是如何在大厂落地,其中会遇到什么 ...

  9. QUIC技术创新 让视频和图片分发再提速

    简介:在1月12日的「阿里云CDN产品发布会-新一代传输协议QUIC让CDN更快一步」之上,阿里云技术专家淮叶分享了QUIC技术及其应用落地实践,内容包含:QUIC协议介绍.相比TCP有哪些优势.应用 ...

最新文章

  1. 2018-3-7论文网络评论中非结构化信息的表示与研究--------实验分析
  2. AutoMapper用法
  3. IMAX融资5000万美元,三年内要打造25个VR项目
  4. 第十二章 支持向量机-机器学习老师板书-斯坦福吴恩达教授
  5. Linux设置路由器ip租约时间,入坑Linux-day15(使用DHCP动态管理主机地址)
  6. 大公司病,真 TM 形象
  7. 波兰表达式 构建 表达式树
  8. IIS设置的解决方案
  9. J2EE--Mybatis基础知识题
  10. docker容器下mysql更改WordPress的site address和home(URL)
  11. mysql backup user_mysql备份常见命令
  12. 在 MQL5 中创建多色彩指标
  13. 揭秘|Axway API在银行业的应用
  14. DLL load failed while importing _sqlite3: 找不到指定的模块。
  15. 苹果plus html,iPhoneX 苹果8 8PLus区别:所有功能参数 最详细全面对比
  16. java foreach 中止_如何正确终止 forEach
  17. 第6次课程作业—张欣
  18. 为什么函数极值点的导数为零
  19. windows11系统下vone客户端连接服务器失败,请确认网络连接是否正常解决方案
  20. 190108每日一句

热门文章

  1. 电子劳动合同如何签订才能生效呢?四步就能教会你!
  2. 真是尿了!掉进了一个“盲僧”都能绕过的坑
  3. java vr 开发_VR:虚拟与现实
  4. python基础练习题(一)答案版
  5. 20180409-A · NFL Positional Salaries · ggplot2, 小提琴图 散点图 · R 语言数据可视化 案例 源码
  6. Wuss Weapp 一款高质量,组件齐全,高自定义的微信小程序UI组件库
  7. 按键精灵上传账号到服务器_【按键精灵】利用服务器远程代码实现图色信息热更新...
  8. 安装PHP解析环境 nginx配置php 实现mysql的连接
  9. BigData CH4 MapReduce
  10. cmu15445 2023spring project01