HTTP3版本和实现验证

news2024/11/25 2:21:38

HTTP3协议基于Google的 QUIC 协议,由互联网工程任务组(IETF)来制定。目录还是草案,已经进行到第33版。

HTTP3 是基于 QUIC 协议的 http。传输层是UDP+QUIC,应用层仍是HTTP,即request/respose, request里也仍是method, url, headers, body等等,从应用层的角度来看,你的代码无需修改就可以迁移到新的协议版本上来。

检查网站是否支持http3协议:

https://http3check.net/?host=...

curl 工具从7.67以后的版本增加对http3的实验性支持。

curl --http3 https://nghttp2.org:8443/

检查浏览器是否支持http3协议:

https://http3.is

今年10月,Facebook 号称超 75% 的流量已使用 QUIC 和 HTTP/3协议。

http 1.1 与http2 及http3协议的比较


KGMJJO3%1R`A@PO0[AGYK7M.png

与http2一样,http3也采用加密的二进制协议,不一新的是http3是基出UDP协议的。

关于为什么http3会采用UDP协议,带来了哪些好处,可以参考http3详解。 cURL的作者 Daniel Stenberg 对此有很详细的说明。包括协议僵化、TCP队关阻塞、减少延迟、安全等都有说明,且有中文译文,值得一看。

一些相关规范草案:

  • 0-RTT
  • H3-29
  • H3-27
  • H3-Q050
  • H3-T051
  • H3-T050
  • H3-Q046
  • H3-Q043
  • Q046
  • Q043

零往返时间恢复 Zero Round Trip Time Resumption (0-RTT)

当有人在浏览器中输入您网站的地址时,幕后发生了很多事情……

  1. DNS查找 —— 将您的网站地址转换为IP地址的位置,这是浏览器实际用于请求您的网站的地址。因为一般会通过你的网络供应商(ISP)所提供的 DNS 服务器实现查找,且找到后都会缓存一段时间,这通常相对较快且延迟较低。
  2. TCP握手 —— 浏览器将请求发送到已提供的IP地址,尝试与服务器建立连接–这需要1次往返(请求和响应)。
  3. TLS握手 —— 建立连接后,浏览器和服务器现在可以决定他们都希望使用哪种加密协议– TLS 1.2和更低版本需要2次往返,而TLS 1.3可以降低到1次往返。
  4. 页面提取 —— 现在他们正在使用相同的语言,浏览器请求您网站的内容,然后服务器将其返回-这需要再进行一次往返。

0-RTT 零往返时间恢复, 最早是TLS 1.3 提出和一种恢复连接的机制。即恢复链接时直接使用之前已经交换地的密钥加密应用数据,而无需再经历单独的建立 TCP 连接和 TLS 交换密钥的客户端服务器之前的数据往返。

0-RTT允许在无需任何往返的情况下恢复会话。

这里给一个总结...

  • TLS 1.2(及更低版本)
    • 新会话:DNS + 4次往返
    • 续会:DNS + 3次往返
  • TLS 1.3
    • 新会话:DNS + 3次往返
    • 续会:DNS + 3次往返
  • 具有0-RTT的TLS 1.3
    • 新会话:DNS + 3次往返
    • 续会:DNS + 2次往返

从理论上讲,0-RTT因为使用以前的密钥,确实可以对网站来进行重放攻击。因此,在实施时需要一直保持谨慎,一般仅允许GET请求与0-RTT一起使用。由于GET请求永远不要修改服务器上的任何内容,只能返回结果,这意味着网站风险更小。

H3-29

打开 https://http3.is/ 网站:

普通青年看到的是这样的一个画面:

D$@13N6`[_NY@I7G6606{JC.png

文艺青年用Mac对chrome加参数打开:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-quic --quic-version=h3-29

则看到了这样的画面:

mp4

2`@6QI59VW45E4ZG}YRI$VQ.png

同时在开发者工具栏会看到h3-29协议:

6V]]DFD6IQZT2)3IFC2YF5D.png

如果第一链接时没有显示动画,观察一下服务器的响应头,可以看到:

alt-svc: h3-29=":443";ma=86400,h3-27=":443";ma=86400

这实际是在告诉客户端可以升级到h3协议上。这时再刷新页面,chrome会切换到h3协议上去。这样就实现了新旧协议的过渡升级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G消息 x 文旅 | 一站式智慧文旅解决方案

5G消息 x 文旅 | 一站式智慧文旅解决方案 文旅 x 5G 消息将进一步强化资源整合,满足游客服务需求、企业营销需求、政府管理需求,推进文化旅游项目的智慧化、数字化,增强传播力、竞争力和可持续性。5G 消息的“原生入口”、“超强呈现”、“智…

基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)

采用k-最近邻KNN和随机森林算法建立预测模型。 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC # Support Vector Classifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import accu…

LabVIEW开发指针式压力仪表图像识别

系统利用LabVIEW编程实现对指针式压力仪表的读取,通过相机、光源、固定支架等硬件捕捉仪表图像,并通过图像识别技术解析压力值。系统分为两个阶段:第一阶段固定相机更换仪表,第二阶段移动相机识别多个固定仪表。本文介绍硬件选择、…

LeetCode | 21.合并两个有序链表

这道题也是很经典的一道题了,408的算法题中也考过这个思想,因为两个链表已是升序,合并只需要两个指针,分别指向两个表的表头,分别比较两个指针所指向的结点的val,小的就插入到目标链表里面,再后…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主:是花子呀 本篇博客参考视频:https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥?Lora 的 缩写 Lora:Low Rank Ada…

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说,一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板,特别注重于美式动漫风格的呈现,让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

Adobe Photoshop cc快速抠图与精致抠图方法

一、背景 Photoshop cc绝对是最好用的抠图and修图软件,但是即使最简单的抠图,每次用时都忘记怎么做,然后再去B站搜,非常费时,下面记录一下抠图过程,方便查阅。 一、Adobe Photoshop快速抠图 选择——主体…

遥控玩具车电机驱动应用中的双H桥驱动芯片

遥控玩具车的基本工作原理是通过无线电遥控器发送信号,这些信号被玩具车内的接收器接收并解码,从而控制玩具车的运行。根据车身外型的不同,可以分为:普通的私家房车、越野车、货柜车、翻斗车等等。遥控器的操作,如前进…

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中,隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如,有些网络规模很小,为了管理简单&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发(Java 是基础,有些源码是 Java 写…

SARscape5.6.2干涉叠加处理效率提升

SARscape5.6.2于2022年5月正式发布,包含若干更新和优化。干涉叠加处理模块在处理速度方面持续提升,表现在:PS干涉工作流处理、第一次反演和第二次反演优化,速度提升;SBAS处理干涉图生成和干涉图优化速度提升&#xff0…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法,以便达到更好的效果。Windows操作系统提供了两套机制,一套机制是使用默认的对象属性进行简单的操作,并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性,实现自己想要的效果。本节我…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点: JavaScript中一切引用类型都是对象,对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题

解决:selenium运行时driver初始化失败 DevToolsActivePort file doesn‘t exist的问题 DevToolsActivePort file doesnt exist报错信息:![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b3f8acc1c47d45e3912575896e421567.png)现象&#xff1…

细说MCU修改回调函数调用模式的方法

目录 1、硬件及工程 2、实现方法 (1)修改while(1)中的代码: (2)修改2 (3)修改3 (4)修改4 (5)修改5 3、下载并运行 在本文作者的文章中&a…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似: 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务,我们需要停止这个进程或更改新服务的端口: 1、终止进程 taskkill /PID 6284 /F2、确…

ESP32 IDF ADF 加入音频

需要把mp3制作成音频bin 用ADF自带工具 果用户需要生成自己的 audio-esp.bin,则需要执行 mk_audio_bin.py 脚本(位于 $ADF_PATH/tools/audio_tone/mk_audio_tone.py),并且指定相关文件的路径。 源 MP3 文件在 tone_mp3_folder …

图像到3D模型的革命性转换

在数字艺术、虚拟现实和增强现实等领域,从二维图像生成三维模型一直是一个挑战。然而,随着技术的不断进步,我们迎来了一种全新的解决方案,它能够从单张正交RGB图像中快速、高效地生成具有极高保真纹理和精细几何细节的3D网格模型。 1、定位与意义: 该解决方案是一种前沿…

django学习入门系列之第二点《浏览器能识别的标签2》

文章目录 超链接图片小结往期回顾 超链接 当前界面跳转 <!-- href"网站" 默认是本界面跳转到其他网站--> <!-- a标签&#xff0c;一半用于超链接跳转 --> <a href"网站"> </a>跳转到其他的网站 <a href "需要跳转的网…

Vitis HLS 学习笔记--移除内存分配malloc

目录 1. 简介 2. 示例解析 2.1 源码解释 2.2 malloc 分析 2.3 替代方案分析 3. 总结 1. 简介 Vitis HLS 也不支持动态创建或删除 C/C 对象&#xff08;用于综合&#xff09;。 本文探究如何在C/C代码中避免使用显式的malloc函数来分配内存。在硬件设计和FPGA开发中&…