HTTP/2、HTTP/3分别解决了什么问题

总的来说就是HTTP/1.1是请求-响应模型导致队头阻塞问题,HTTP2是TCP层面导致队头阻塞问题

HTTP/2

多路复用,解决了HTTP/1.1队头阻塞问题

HTTP/1.1 的实现是基于请求-响应模型的。同一个连接中,HTTP 完成一个事务(请求与响应),才能处理下一个事务,也就是说在发出请求等待响应的过程中,是没办法做其他事情的,如果响应迟迟不来,那么后续的请求是无法发送的,也造成了队头阻塞的问题。

HTTP/2 实现了 Stream 并发,多个 Stream 只需复用 1 个 TCP 连接,节约了 TCP 和 TLS 握手时间,以及减少了 TCP 慢启动阶段对流量的影响。不同的 Stream ID 可以并发,即使乱序发送帧也没问题,比如发送 A 请求帧 1 -> B 请求帧 1 -> A 请求帧 2 -> B 请求帧2,但是同一个 Stream 里的帧必须严格有序。

压缩HTTP头,节省报文体积

因为大部分HTTP请求的header是重复的,尤其是长长的cookie,通过静态表和 Huffman 编码的方式,将体积压缩了近一半,而且针对后续的请求头部,还可以建立动态表,将体积压缩近 90%,大大提高了编码效率,同时节约了带宽资源。

支持服务器主动推送资源

HTTP/3

基于UDP实现了一个可靠的传输协议QUIC,解决了TCP队头阻塞问题

HTTP/2 多个请求是跑在一个 TCP 连接中的,那么当 TCP 丢包时,整个 TCP 都要等待重传,那么就会阻塞该 TCP 连接中的所有请求。
在这里插入图片描述

TCP与TLS的握手时延迟

发起 HTTP 请求时,需要经过 TCP 三次握手和 TLS 四次握手(TLS 1.2)的过程,因此共需要 3 个 RTT 的时延才能发出请求数据。

网络迁移需要重新连接

一个 TCP 连接是由四元组(源 IP 地址,源端口,目标 IP 地址,目标端口)确定的,这意味着如果 IP 地址或者端口变动了,就会导致需要 TCP 与 TLS 重新握手,这不利于移动设备切换网络的场景,比如 4G 网络环境切换成 WiFi。

这些问题都是 TCP 协议固有的问题,无论应用层的 HTTP/2 在怎么设计都无法逃脱。要解决这个问题,就必须把传输层协议替换成 UDP,这个大胆的决定,HTTP/3 做了!

QUIC协议的提出!!!

用UDP代替TCP,我们都知道UDP是一个简单不可靠的传输协议,UDP包之间不需要有序而且不需要建立连接,即没有握手挥手,那自然是快的。

但是在传输数据前虽然需要 QUIC 协议握手,这个握手过程只需要 1 RTT,握手的目的是为确认双方的「连接 ID」,连接迁移就是基于连接 ID 实现的(而非源 IP 地址,源端口,目标 IP 地址,目标端口四元组)。

当然,HTTP/3 不仅仅只是简单将传输协议替换成了 UDP,还基于 UDP 协议在「应用层」实现了 QUIC 协议,它具有类似 TCP 的连接管理、拥塞窗口、流量控制的网络特性,相当于将不可靠传输的 UDP 协议变成“可靠”的了,所以不用担心数据包丢失的问题。

每个数据包都有一个序号唯一标识。当某个流中的一个数据包丢失了,即使该流的其他数据包到达了,数据也无法被 HTTP/3 读取,直到 QUIC 重传丢失的报文,数据才会交给 HTTP/3。

其他流的数据报文只要被完整接收,HTTP/3 就可以读取到数据。这与 HTTP/2 不同,HTTP/2 只要某个流中的数据包丢失了,其他流也会因此受影响

QUIC 协议并不是与 TLS 分层,而是 QUIC 内部包含了 TLS,它在自己的帧会携带 TLS 里的“记录”,再加上 QUIC 使用的是 TLS 1.3,因此仅需 1 个 RTT 就可以「同时」完成建立连接与密钥协商,甚至在第二次连接的时候,应用数据包可以和 QUIC 握手信息(连接信息 + TLS 信息)一起发送,达到 0-RTT 的效果。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android车载开发之AAOS快速入门

一、概述 在正式介绍Android Automotive OS之前,我们先弄清两个概念:Android Auto和Android Automotive OS。 Android Auto Android Auto 不是操作系统,而是一个应用或一个服务。当 Android 手机通过无线或有线方式连接到汽车时,Android 系统会将使用 Android Auto 服务…

Vue3中使用ffmpeg.wasm进行转码

一、安装方法 1.1 使用yarn进行安装 yarn add ffmpeg/ffmpeg ffmpeg/core1.2 安装版本 注意安装版本需在0.12.0以上版本才可以使用下面代码(目前更新到0.12.10),之前的版本代码使用方法有所不同(0.12.10之后的版本也可能会有变动…

android内存优化总结

最近遇到视频播放的时候,内存居高不下的问题。没有崩溃,没有anr,功能一切正常。唯独内存一直攀升。 小总结下: 1.fragment 在activity全局变量被依赖,虽然调用fragment.onDestory了,但无法真正回收。 2.fragment 内部…

教师跨市调动难吗

当你站在三尺讲台,眼前是孩子们求知若渴的眼神,你是否曾想过,有一天你会离开这片熟悉的土地,踏上一段全新的教育征途?跨市调动,对于许多教师而言,是一个充满挑战与机遇的选择。 不得不说&#x…

滑动窗口

题目 思路 对于一个数组区间的最值,可以开辟一个队列记录(当然这里不能叫队列只是和队列相似,习惯性叫法)。 每个区间的最值等于队首元素。扫描数组时,如果该元素大于队尾元素(取最大值时)将该队尾元素出队…

2024洗地机选购攻略 | 洗地机好用吗?洗地机如何挑选?

在众多清洁工具中,洗地机以其卓越的清洁能力和便捷的操作方式,获得了广泛关注。2024年,市场上涌现出众多品牌的洗地机,但哪些品牌的洗地机值得推荐呢?在这里,我们将详细探讨几个备受好评的洗地机品牌&#…

[动态规划]---part1

前言 作者:小蜗牛向前冲 专栏:小蜗牛算法之路 专栏介绍:"蜗牛之道,攀登大厂高峰,让我们携手学习算法。在这个专栏中,将涵盖动态规划、贪心算法、回溯等高阶技巧,不定期为你奉上基础数据结构…

宗庆后去世,钟睒睒被骂农夫与蛇

作者:翻篇 琥珀酒研社快评: 宗庆后去世后 娃哈哈销量暴涨 而农夫山泉销量暴跌 创始人钟睒睒 被网友骂成农夫与蛇 这是咋回事呢 钟睒睒没成为娃哈哈代理前 跟很多创业者一样 做啥啥不成 摆地摊不够回本 种蘑菇没有销路 就在他走投无路时 遇…

ORA-00600 [17147] patch 33093098它来了

文章目录 前言一、Opatch的更新二、集群重启 前言 书接上回:https://blog.csdn.net/weixin_41607523/article/details/136021914?spm1001.2014.3001.5501 针对一直报错的600 很是苦恼,重启了n回之后还是会在几天之后继续报错,为排除所有可能…

土壤数据合集:全国各省土壤类型分布矢量数据+中国土壤质地空间分布数据+中国土壤侵蚀空间分布数据

给大家分享3份土壤数据 1、全国各省土壤类型分布矢量数据 2、中国土壤质地空间分布数据 3、中国土壤侵蚀空间分布数据 #1全国各省土壤类型分布矢量数据 本数据包括两个数据集: (1)1:400万中国土壤图(2000), (2&…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image(可在wordpress插件市场搜索下载),是一款用于本地化文章外部图片的插件,支持如下功能: 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

Xcode :Could not build module ‘WebKit‘ 已验证解决

问题&#xff1a;Could not build module WebKit 具体报错如下&#xff1a; error: type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type property (nullable, nonatomic, copy) NSArray<nw_proxy_config_…