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设计时考虑了流的独立性,减少了依赖和潜在的阻塞。(本质上是多路复用+轮询)

相关推荐
在路上看风景1 小时前
7.4 KDC和CA
网络
新诺韦尔API1 小时前
手机空号检测接口对接全流程指南
大数据·网络·智能手机·api
乾元2 小时前
AI + Jinja2/Ansible:从自然语义到可执行 Playbook 的完整流水线(工程级深度)
运维·网络·人工智能·网络协议·华为·自动化·ansible
ZhengEnCi2 小时前
一次多线程同步问题的排查:从 thread_count 到 thread.join() 的踩坑之旅
python·网络协议·tcp/ip
飞行增长手记2 小时前
IP协议从跨境到物联网的场景化应用
服务器·前端·网络·安全
GDAL2 小时前
客户端与服务器SSL协议/加密套件不兼容:完整解决方案
服务器·ssl
万邦科技Lafite2 小时前
API接口地址解析地区码操作指南
网络·数据库·redis·缓存·开放api·电商开放平台
oxygen-12042 小时前
https nginx步骤
网络协议·http·https
瀚高PG实验室3 小时前
如何将HGDB安全版(RPM包形式)安装在非root用户下
服务器·网络·安全·瀚高数据库