chromium 协议栈 cronet ios 开启 H3

2024-04-10 18:04

本文主要是介绍chromium 协议栈 cronet ios 开启 H3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 方法。
在这里插入图片描述

这篇关于chromium 协议栈 cronet ios 开启 H3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/891756

相关文章

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

一文详解kafka开启kerberos认证的完整步骤

《一文详解kafka开启kerberos认证的完整步骤》这篇文章主要为大家详细介绍了kafka开启kerberos认证的完整步骤,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、kerberos安装部署二、准备机器三、Kerberos Server 安装1、配置krb5.con

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看

idea如何开启菜单栏

《idea如何开启菜单栏》文章介绍了如何通过修改IntelliJIDEA的样式文件`ui.lnf.xml`来重新显示被关闭的菜单栏,并分享了解决问题的步骤... 目录ijsdea开启菜单栏第一步第二步总结idea开启菜单栏手贱关闭了idea的js菜单栏,花费了半个小时终于解决,记录并分享一下第一步找

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问