HTTP不同版本核心对比

不同版本区别图

HTTP/1.0、HTTP/2.0 和 HTTP/3.0 的协议栈比较:

HTPP1.1和2.0的区别

1. 多路复用:

  • HTTP/2.0 在同一连接上可以同时传输多个请求和响应(可以看作是 HTTP/1.1 中长链接的升级版本),互不干扰。HTTP/1.1 则使用串行方式,每个请求和响应都需要独立的连接,而浏览器为了控制资源会有 6-8 个 TCP 连接的限制。这使得 HTTP/2.0 在处理多个请求时更加高效,减少了网络延迟和提高了性能。

2. 二进制帧:

  • HTTP/2.0 使用二进制帧进行数据传输,而 HTTP/1.1 则使用文本格式的报文。二进制帧更加紧凑和高效,减少了传输的数据量和带宽消耗。

3. 队头阻塞:

  • HTTP/2 引入了多路复用技术,允许多个请求和响应在单个 TCP 连接上并行交错传输,解决了 HTTP/1.1 应用层的队头阻塞问题,但 HTTP/2 依然受到 TCP 层队头阻塞 的影响。

4. 头部压缩:

  • HTTP/1.1 支持**Body** 压缩,Header 不支持压缩。HTTP/2.0 支持对**Header** 压缩,使用了专门为Header压缩而设计的 HPACK 算法,减少了网络开销。

  • 服务器推送(Server Push)

  • HTTP/2.0 支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少了客户端的请求次数和延迟。而 HTTP/1.1 需要客户端自己发送请求来获取相关资源。

HTPP2.0和3.0的区别

HTTP2.0存在的问题:

1、如果有丢包请求会等待重传,阻塞后面的数据,有可能不如http1.1的多个TCP连接 TCP 以及 TCP+TLS 建立连接的延时

2、TCP 的队头阻塞并没有彻底解决 TCP 为了保证可靠传输,有一个"超时重传"机制,丢失的包必须等待重传确认

3、多路复用导致服务器压力上升,多路复用没有限制同时请求数。请求的平均数量与往常相同,但实际会有许多请求的短暂爆发,导致瞬时 QPS 暴增 4、多路复用容易 Timeout 大批量的请求同时发送,由于 HTTP2 连接内存在多个并行的流,而网络带宽和服务器资源有限,每个流的资源会被稀释,虽然它们开始时间相差更短,但却都可能超时

HTPP2.0和3.0最大两个区别,在于:

  1. HOL(队头堵塞问题)解决的更加彻底

  2. 网络切换更加快速

1. 协议基础

  • HTTP/2 是基于TCP协议 ,它引入了的概念,每个帧都标识了它传输的是数据还是控制信息。这种设计使得HTTP/2可以在同一个连接上同时发送请求和响应,大大提高了效率。

  • HTTP/3 则使用了全新的传输协议QUIC (快速UDP互联网连接)。QUIC是基于UDP的而不是TCP。这一改变使得HTTP/3在处理多个请求时能够更加高效,尤其是在丢包和重新传输的情况下。

2. 多路复用

  • HTTP/2 通过的机制实现了多路复用,即在单个连接上同时传输多个请求和响应。这减少了TCP连接的数量,从而降低了延迟。

    • 但在同一个 TCP 连接中的多个流(Stream)之间并非完全独立。如果某个流出现了丢包或阻塞,可能会影响到其他流的传输,这就是所谓的 "队头阻塞" 问题(HOL)
  • HTTP/3 由于基于QUIC,其多路复用能力得到了进一步的增强。

    • QUIC天生支持无阻塞的多流并行,QUIC 中的流具有更强的独立性。每个流都有自己独立的编号和状态,流之间的数据传输互不干扰。即使某个流发生了丢包或错误,也不会影响其他流的正常传输,从而进一步解决了队头阻塞问题

3. 连接建立和迁移

  • HTTP/2 在建立连接时需要**TCP的三次握手+TLS的握手(TLS1.2)**过程,这可能导致初始延迟。

  • HTTP/3 的QUIC协议将TLS集成到了传输层,QUIC集成了连接建立和加密握手的功能,显著减少了连接建立时间。QUIC支持连接迁移,即使用户的网络环境改变,也能快速恢复连接。

4. 丢包恢复

  • HTPP2.0基于 TCP 协议。当数据包丢失时,TCP 需要依赖序列号和确认应答来管理丢包,会暂停整个 TCP 流的传输,直到丢失的数据包被重新传输。

  • HTTP3.0的QUIC 拥有自己的拥塞控制算法,能够快速恢复丢失的数据包,比TCP的重传机制更为高效。

5. 安全性

  • HTTP/2HTTP/3 都要求默认使用TLS加密,保证数据传输的安全性。

  • HTTP/2使用的TLS加密非强制,且加密对象是 TCP 连接中传输的应用层的数据,并不会对 TCP 头部以及 TLS 记录层头部进行加密。

  • HTTP/3由于使用QUIC,TLS1.3加密更为安全, 且是强制的。对整个数据包(包括报文头和报文体)进行了加密与认证处理。

6. 头部压缩

  • HTTP/2 使用HPACK算法压缩头部,减少了数据传输的大小和延迟。在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,就不用重复发送同样字段了,只发送索引号,减少数据量提高速度

  • HTTP/3 则进一步使用了QPACK算法,这是一种类似于HPACK但为QUIC特别优化的头部压缩算法。由于QUIC支持流的并行传输,QPACK设计时考虑了流的独立性,减少了依赖和潜在的阻塞。(本质上是多路复用+轮询)

相关推荐
皮皮学姐分享-ppx10 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
W_chuanqi10 小时前
联想M7615DNA网络打印方法
网络·联想·打印机网络连接
HavenlonLabs13 小时前
硬件 + SaaS 产品的工程化路径:从系统架构、PCB 设计到工程样机
网络·安全·架构·系统架构·安全架构
sweet丶16 小时前
MQTT消息通道-基础篇
网络协议
yychen_java17 小时前
当算法成为武器:AI泛滥时代的多维危机透视与治理路径
网络·人工智能·ai
漫途科技17 小时前
精准盯防危房隐患,智守人居安全|MTB46-4-2A 4G数据采集终端专项应用方案
网络·安全
奥利奥夹心脆芙18 小时前
辅助排查 HTTP 接口代码报错,实操完整案例分享
http
Misnearch18 小时前
抓包Packet Capture
网络·抓包
zhangfeng113318 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络
吠品19 小时前
一次 Nginx 报错 unexpected end of file 的排查记录
网络协议·https·ssl