chromium 协议栈 cronet ios 开启 H3

本文介绍了Cronet中关于H3协议的全局开关、服务器如何下发alt-svc头来控制H3版本和端口,以及TCP和H3之间的竞速机制,涉及关键类如setQuicEnabled和HttpStreamFactory的相关方法。
摘要由CSDN通过智能技术生成

1、全局开关

cronet 原生代码有一个 h3 开启的全局开关,开启后,只需要服务端下发 h3 的域名和版本信息,即可开始与 tcp 竞速开启。
iOS 对应的接口为 setQuicEnabled,通过该接口设置的值最后会复制到 c++ 层的 URLRequestContextConfigBuilder 类的 enable_quic 成员。

2、server 下发 alt-svc header

无论上述开关是否开启,server 都可以下发 alt-svc 头,比如 www.example.com 对应的 alt-svc 为 ‘h3-29=“h3.example.com:443”;ma=2592000’,代表 h3 的版本为 h3-29,支持 h3 的域名为h3.baidu.com,端口为 443,该 header 有效期为 2592000 秒(30天),如果 enable_quic 为 true,该 alt-svc 配置则会保存供对应域名(www.example.com)的后续请求使用,如果为 false,则该配置则被忽略,即无效。
alt-svc 头处理代码位于 net/http_stream_factory.cc 的 HttpStreamFactory::ProcessAlternativeServices 方法。

端上可以按需指定支持的 h3 版本,通过修改 net/quic/quic_context.h 中的 DefaultSupportedQuicVersions 的返回值。(或者再实现一个可定制的接口使用)

3、tcp 和 h3 竞速

如果上述条件满足了,此时会判断是否创建 alt job,alt job 专门用于走其他协议比如 h3(如果启用了 h3)等。

相应代码位于:net/http/http_stream_factory_job_controller.cc 的 HttpStreamFactory::JobController::DoCreateJobs 方法。
在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值