当前位置:首页 > 经验 >

怎么能把http去掉(http要关掉吗)

来源:原点资讯(www.yd166.com)时间:2022-11-09 14:17:17作者:YD166手机阅读>>

那 QUIC 和 HTTP/3 什么关系呢?QUIC 是用来替代 TCP、SSL/TLS 的传输层协议,在传输层之上还有应用层,我们熟知的应用层协议有 HTTP、FTP、IMAP 等,这些协议理论上都可以运行在 QUIC 之上,其中运行在 QUIC 之上的 HTTP 协议被称为 HTTP/3,这就是”HTTP over QUIC 即 HTTP/3“的含义。

因此想要了解 HTTP/3,QUIC 是绕不过去的,下面主要通过几个重要的特性让大家对 QUIC 有更深的理解。

1.3 零 RTT 建立连接

用一张图可以形象地看出 HTTP/2 和 HTTP/3 建立连接的差别。

怎么能把http去掉,http要关掉吗(5)

HTTP/2 的连接需要 3 RTT,如果考虑会话复用,即把第一次握手算出来的对称密钥缓存起来,那么也需要 2 RTT,更进一步的,如果 TLS 升级到 1.3,那么 HTTP/2 连接需要 2 RTT,考虑会话复用则需要 1 RTT。有人会说 HTTP/2 不一定需要 HTTPS,握手过程还可以简化。这没毛病,HTTP/2 的标准的确不需要基于 HTTPS,但实际上所有浏览器的实现都要求 HTTP/2 必须基于 HTTPS,所以 HTTP/2 的加密连接必不可少。而 HTTP/3 首次连接只需要 1 RTT,后面的连接更是只需 0 RTT,意味着客户端发给服务端的第一个包就带有请求数据,这一点 HTTP/2 难以望其项背。那这背后是什么原理呢?我们具体看下 QUIC 的连接过程。

Step1:首次连接时,客户端发送 Inchoate Client Hello 给服务端,用于请求连接;

Step2:服务端生成 g、p、a,根据 g、p 和 a 算出 A,然后将 g、p、A 放到 Server Config 中再发送 Rejection 消息给客户端;

Step3:客户端接收到 g、p、A 后,自己再生成 b,根据 g、p、b 算出 B,根据 A、p、b 算出初始密钥 K。B 和 K 算好后,客户端会用 K 加密 HTTP 数据,连同 B 一起发送给服务端;

Step4:服务端接收到 B 后,根据 a、p、B 生成与客户端同样的密钥,再用这密钥解密收到的 HTTP 数据。为了进一步的安全(前向安全性),服务端会更新自己的随机数 a 和公钥,再生成新的密钥 S,然后把公钥通过 Server Hello 发送给客户端。连同 Server Hello 消息,还有 HTTP 返回数据;

Step5:客户端收到 Server Hello 后,生成与服务端一致的新密钥 S,后面的传输都使用 S 加密。

这样,QUIC 从请求连接到正式接发 HTTP 数据一共花了 1 RTT,这 1 个 RTT 主要是为了获取 Server Config,后面的连接如果客户端缓存了 Server Config,那么就可以直接发送 HTTP 数据,实现 0 RTT 建立连接。

怎么能把http去掉,http要关掉吗(6)

这里使用的是 DH 密钥交换算法,DH 算法的核心就是服务端生成 a、g、p 3 个随机数,a 自己持有,g 和 p 要传输给客户端,而客户端会生成 b 这 1 个随机数,通过 DH 算法客户端和服务端可以算出同样的密钥。在这过程中 a 和 b 并不参与网络传输,安全性大大提高。因为 p 和 g 是大数,所以即使在网络中传输的 p、g、A、B 都被劫持,那么靠现在的计算机算力也没法破解密钥。

1.4 连接迁移

TCP 连接基于四元组(源 IP、源端口、目的 IP、目的端口),切换网络时至少会有一个因素发生变化,导致连接发生变化。当连接发生变化时,如果还使用原来的 TCP 连接,则会导致连接失败,就得等原来的连接超时后重新建立连接,所以我们有时候发现切换到一个新网络时,即使新网络状况良好,但内容还是需要加载很久。如果实现得好,当检测到网络变化时立刻建立新的 TCP 连接,即使这样,建立新的连接还是需要几百毫秒的时间。

QUIC 的连接不受四元组的影响,当这四个元素发生变化时,原连接依然维持。那这是怎么做到的呢?道理很简单,QUIC 连接不以四元组作为标识,而是使用一个 64 位的随机数,这个随机数被称为 Connection ID,即使 IP 或者端口发生变化,只要 Connection ID 没有变化,那么连接依然可以维持。

怎么能把http去掉,http要关掉吗(7)

1.5 队头阻塞/多路复用

HTTP/1.1 和 HTTP/2 都存在队头阻塞问题(Head of line blocking),那什么是队头阻塞呢?

TCP 是个面向连接的协议,即发送请求后需要收到 ACK 消息,以确认对方已接收到数据。如果每次请求都要在收到上次请求的 ACK 消息后再请求,那么效率无疑很低。后来 HTTP/1.1 提出了 Pipelining 技术,允许一个 TCP 连接同时发送多个请求,这样就大大提升了传输效率。

怎么能把http去掉,http要关掉吗(8)

栏目热文

http协议认证方式(http认证方式)

http协议认证方式(http认证方式)

当互联网应用越来越多,每个应用程序都实现了自己的身份存储、认证和授权,用户需要在应用上反复的注册与登录,体验糟糕,用户身...

2022-11-09 14:15:56查看全文 >>

如何去掉http校验(http怎么校验)

如何去掉http校验(http怎么校验)

HTTP 方法用于执行创建、读取、更新和删除(或 CRUD)操作。最常用的方法是 POST、GET、PUT、PATCH ...

2022-11-09 13:44:53查看全文 >>

http用户验证步骤(http服务的正确范例)

http用户验证步骤(http服务的正确范例)

前言在上一章节中,一一哥 带大家搭建了第一个Spring Security项目,相信小伙伴已经学会了如何利用Spring...

2022-11-09 14:02:23查看全文 >>

http认证过程(产品认证证书查询)

http认证过程(产品认证证书查询)

HttpBasic 认证有一定的局限性与安全隐患,因此在实际项目中使用并不多,但是,有的时候为了测试方便,开启 Http...

2022-11-09 14:15:38查看全文 >>

http认证方法有哪些(http协议基础认证)

http认证方法有哪些(http协议基础认证)

我将在此处描述的问题和解决方案是“基本Http身份验证”的基本对话框的解决方法。尝试统一身份验证流程时遇到了这样的问题...

2022-11-09 14:27:22查看全文 >>

http代理的认证方式(如何做http代理)

http代理的认证方式(如何做http代理)

什么是HTTPS代理随着代理服务器的广泛使用,大家对代理应该有一定的了解。代理根据协最常见的分类是http代理、http...

2022-11-09 14:27:41查看全文 >>

怎样删除http协议(http协议简介)

怎样删除http协议(http协议简介)

HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维...

2022-11-09 14:04:17查看全文 >>

不加密的http传输协议怎么取消(怎么对http协议加密)

不加密的http传输协议怎么取消(怎么对http协议加密)

https 加密传输协议很多新手呢他并不知道,当我们去打开一个网站的时候,这个网站的域名前面会有一个http:/冒号双斜...

2022-11-09 13:41:16查看全文 >>

http协议怎么修改(如何配置http协议)

http协议怎么修改(如何配置http协议)

1.简介有的小伙伴或者童鞋们可能会好奇地问:不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为...

2022-11-09 14:15:40查看全文 >>

如何消除http请求(http常见的几种请求方式)

如何消除http请求(http常见的几种请求方式)

场景:作为开发者,我们接触最多的就是CRUD,各种接口的联调,但是好像会比较少的去关注我们发送的http请求,当这个请求...

2022-11-09 14:27:52查看全文 >>

文档排行