HTTP 1.0、HTTP 1.1 和 HTTP 2 的主要区别

news/2025/2/3 8:15:28/文章来源:https://www.cnblogs.com/3to4/p/18697316

HTTP 1.0、HTTP 1.1 和 HTTP 2 是 HTTP 协议的不同版本,每个版本都引入了新的特性和改进。以下是它们的主要区别:


1. HTTP 1.0

  • 发布时间:1996 年
  • 特点
    • 短连接:每次请求都需要建立一个新的 TCP 连接,请求完成后立即关闭连接。
    • 无状态:每个请求都是独立的,服务器不会记住之前的请求。
    • 简单:支持基本的请求方法(如 GET、POST)和头部字段。
  • 缺点
    • 性能差:频繁建立和关闭 TCP 连接导致高延迟。
    • 功能有限:不支持持久连接、管道化等现代特性。

2. HTTP 1.1

  • 发布时间:1997 年(1999 年成为标准)
  • 改进点
    • 持久连接:默认使用持久连接(Connection: keep-alive),可以在一个 TCP 连接上发送多个请求和响应,减少连接建立和关闭的开销。
    • 管道化:支持请求管道化(pipelining),客户端可以在收到上一个响应之前发送下一个请求,但服务器必须按顺序返回响应。
    • 分块传输编码:支持分块传输(Transfer-Encoding: chunked),允许服务器在未知内容长度的情况下逐步发送数据。
    • 缓存控制:引入了更多缓存控制机制(如 Cache-ControlETag)。
    • Host 头部:支持虚拟主机(一个 IP 地址托管多个域名),通过 Host 头部区分不同的网站。
    • 更多方法:新增了 PUT、DELETE、OPTIONS、TRACE 等方法。
  • 缺点
    • 队头阻塞:虽然支持管道化,但响应必须按顺序返回,一个慢响应会阻塞后续响应。
    • 头部冗余:每个请求都会发送完整的头部信息,导致冗余。

3. HTTP 2

  • 发布时间:2015 年
  • 改进点
    • 二进制协议:HTTP 2 使用二进制格式传输数据(而非 HTTP 1.x 的文本格式),解析更高效。
    • 多路复用:在同一个 TCP 连接上并行发送多个请求和响应,解决了 HTTP 1.1 的队头阻塞问题。
    • 头部压缩:使用 HPACK 算法压缩头部,减少冗余数据。
    • 服务器推送:服务器可以主动向客户端推送资源,而无需客户端显式请求。
    • 流优先级:支持为请求设置优先级,确保重要资源优先传输。
    • 改进的安全性:虽然不是强制要求,但主流浏览器和服务器通常要求 HTTP 2 必须基于 HTTPS(TLS 加密)。
  • 优点
    • 性能大幅提升:多路复用和头部压缩显著减少了延迟和带宽消耗。
    • 更好的用户体验:服务器推送和流优先级优化了页面加载速度。

对比总结

特性 HTTP 1.0 HTTP 1.1 HTTP 2
连接管理 短连接(每次请求新建连接) 持久连接(默认 keep-alive) 多路复用(一个连接并行处理)
数据传输 文本格式 文本格式 二进制格式
队头阻塞 存在 存在(管道化部分缓解) 完全解决
头部压缩 不支持 不支持 支持(HPACK 算法)
服务器推送 不支持 不支持 支持
安全性 通常基于 HTTPS
性能 中等

使用场景

  • HTTP 1.1:仍广泛使用,兼容性好,适合不支持 HTTP 2 的旧系统。
  • HTTP 2:现代 Web 应用的首选,性能优越,适合高并发、低延迟的场景。

迁移建议

  • 如果客户端和服务器都支持 HTTP 2,优先使用 HTTP 2。
  • 对于旧系统,可以同时支持 HTTP 1.1 和 HTTP 2,通过 TLS 的 ALPN 扩展自动协商协议版本。

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

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

相关文章

Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED - 思科虚拟无线控制器系统软件

Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED - 思科虚拟无线控制器系统软件Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED 面向云的思科 Catalyst 9800-CL 无线控制器,专为基于意图的网络全新打造…

Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED - 思科无线控制器系统软件

Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED - 思科无线控制器系统软件Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED 思科 Catalyst 9800 系列无线控制器 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-cat…

图解收银台

收银核心和支付引擎是支付系统最核心的两个子系统之一。本篇主要讲清楚收银核心的设计与实现,包括收银核心如何渲染可用支付方式,如何做可支付检查,收银台核心的系统架构、领域模型,常见支付方式等。如果说电子商务是现代经济的繁华都市,那么在线支付系统无疑就是最繁忙的…

Easysearch 集群重置 admin 用户密码

admin 用户是 Easysearch 通过配置文件 user.yml 默认添加的,配置如下: ## Demo users admin:hash: "$2y$12$mA9DDk7iOBQA3u.Ebc0QSOVKsgwlkm6OJcrEcpyrTrT5M5It86usq" # 465f7466f79a67b9039dreserved: trueexternal_roles:- "admin"description: "…

Linux 中awk命令自定义函数

001、[root@PC1 test]# echo a | awk function my_length(str) {return length(str)}; {text = "Hello"; print "Length of text:", my_length(text)} Length of text: 5 。

【CodeForces训练记录】Codeforces Round 1002 (Div. 2)

训练情况赛后反思 这个B题感觉太猜猜乐了,个人感觉B难度远大于C A题 想要数组 \(c\) 至少有三个不同的元素,数组 \(a,b\) 的元素数的和必须 \(\ge 4\),如果种类和为 \(3\) 种,最多能凑出两种不同的数字点击查看代码 #include <bits/stdc++.h> // #define int long lo…

进程的基本概念

写在前面 这是一篇十分简短的文章,主要讲述了进程的基本概念,如何创建进程以及一些细节问题,为接下来学习进程调度打好基础。 什么是进程 简单来说,进程就是运行中的程序。比如,我们双击了存放在硬盘中的某个exe程序,程序被加载到内存中运行起来后,就是所谓的进程。所以…

python 中实现gz文件的解压

python 中实现gz文件的解压。001、(base) [root@PC1 test]# ls a.txt.gz test.py (base) [root@PC1 test]# zcat a.txt.gz ## 测试的压缩文件 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 (base) [root@PC1 test]# cat test.py ## 测试的py…

【模拟电子技术】19-差分放大电路的构成

【模拟电子技术】19-差分放大电路的构成 我们知道在直接耦合放大电路中零点漂移是一个很困扰的问题(可以理解为静态工作点稳定问题),我们通过增加电阻Re来抑制温漂,前面我们也提到过有一种电路可以在直流的时候doubleRe,而交流的时候使得Re消失我们想要抑制这种现象,想到…

球钟问题

球钟问题,对栈和队列的实际应用球钟问题 1. 问题背景 ​ 球钟是一个利用球的移动来记录时间的简单装置。它有三个可以容纳若干个球的指示器:分钟指示器,五分钟指示器和小时指示器。 举例:若分钟指示器中有2个球,五分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32…

本地部署deepseek

前言 如果你电脑配置不错,且期望不受网络限制也可以流畅使用deepseek,那就本地部署deepseek试试吧。下载并安装Ollama Ollama是一个开源的 LLM(大型语言模型)服务工具(就是大模型运行工具),用于简化在本地运行大语言模型,降低使用大语言模型的门槛,使得大模型的开发者…

【邮件安全】近期常见的钓鱼邮件(202411期)

本期主要分享自2024年11月至今几种典型的钓鱼邮件样本。希望通过这种分享,可以帮助广大用户提高警惕性,增强识别与防范钓鱼邮件的能力。 邮箱账户异常类 以下图为例,该钓鱼邮件伪造用户账户出现异常登录情况,引导用户点击“认证账户”按钮进入钓鱼页面。 下图是一封伪造用户…