http1和http2的主要区别

主要有四个方面:

  • 二进制分帧
  • 多路复用
  • 服务器主动推送
  • 头部压缩

将前两点结合来说,首先 二进制分帧

帧:HTTP/2 数据通信的最小单位;

消息:HTTP/2 中,例如在请求和响应等操作中,消息由一个或多个帧组成;

流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。

而二进制分帧是发生在应用层和传输层 中间产生的一层二进制分帧层 中,将 请求头和请求行 封装为 HEADER FRAME,请求体封装为 DATA FRAME。HTTP 1.x 采用文本格式传输数据,HTTP/2 采用二进制格式传输数据,二进制协议解析起来更高效。

接下来是 多路复用

HTTP 1.x 中,想并发多个请求时,必须建立多个 TCP 链接,并且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制。

而HTTP/2 可以实现 多流并行,利用单个连接可以承载任意数量的双向数据流。

数据流以消息的形式发送,而消息又由一个或多个帧组成,根据帧首部的流标识 可以重新组装,因此多个帧之间可以乱序发送

然后是 头部压缩

HTTP/1.x 会在请求和响应中一直携带冗长的头部数据,给网络带来额外的负担。

HTTP/2在客户端和服务器端使用"首部表"来跟踪和存储之前发送的键-值对,对于相同的数据,不再重复发送,每个新的首部键-值对会进行追加或替换操作[只发送差异数据,而不是全部发送,从而减少头部的信息量]。首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新。

最后是 服务器主动推送

服务端可以在发送页面HTML时主动推送其它资源,例如:JS和CSS文件,而不用等到浏览器解析到相应位置,再发起请求等待响应。

服务端可以主动推送,客户端也可以选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送遵守同源策略,服务器不会任意推送第三方资源给客户端。

相关推荐
code_li12 小时前
HTTPS免费证书配置指南
网络协议·http·https
tie123414 小时前
HTTP相关
网络·网络协议·http
埃伊蟹黄面17 小时前
应用层HTTP协议
linux·网络·网络协议·http
Lentou20 小时前
程序调用AI大模型方式(SDK\HTTP\SPRINGAI\LANFCHAIN4J)
人工智能·网络协议·http
甘露寺20 小时前
HTTP长连接内容详解
网络·网络协议·http
acaad20 小时前
java访问https连接报错 unable to find valid certification path to requested target
网络协议·http·https
古城小栈21 小时前
2026 年 Rust 异步 HTTP 首选:reqres,轻量、高效、开箱即用
网络·http·rust
Full Stack Developme21 小时前
HTTP 转发 与 重定向
网络·网络协议·http
一颗青果21 小时前
Http的referer字段
网络·网络协议·http
傻啦嘿哟21 小时前
环境变量配置法:通过HTTP_PROXY让OpenClaw走代理的最佳实践
网络·网络协议·http