Http版本问题

一、HTTP/1.0:最原始的短连接时代

HTTP/1.0 是早期正式标准化的版本,它的特点非常简单:

  1. 默认短连接每发一个 HTTP 请求,就建立一次 TCP 连接,请求结束立刻断开。请求 1 → 建连 → 传数据 → 断连请求 2 → 建连 → 传数据 → 断连

  2. 效率极低 打开一个网页要加载几十张图片、JS、CSS,就会频繁三次握手 + 四次挥手,延迟极高。

  3. 可手动开启长连接通过请求头:

    复制代码
    Connection: keep-alive

    让 TCP 连接暂时不关闭,供多个请求复用,但不是默认行为

一句话总结:HTTP/1.0 能用,但很慢,连接无法复用,不适合现代复杂网页。


二、HTTP/1.1:统治互联网二十年的王者

HTTP/1.1 是真正大规模使用的版本,直到今天仍有大量系统在跑。它解决了 1.0 的核心痛点。

1. 默认长连接(Keep-Alive)

从 HTTP/1.1 开始,TCP 连接默认不关闭,可以被多个请求复用。不用每次请求都重新建连,大幅减少握手开销。

2. 分块传输编码(Chunked)

服务端不用等数据全部生成完再返回,可以边生成边发。适合大文件、动态内容,避免长时间阻塞。

3. 管道机制(Pipeline)

在同一个 TCP 连接里,客户端可以同时发送多个请求,不用等上一个响应回来再发下一个。

但它有个致命问题:**队头阻塞(Head-of-Line Blocking)**如果第一个请求卡住,后面所有请求都得等。

一句话总结:HTTP/1.1 解决了连接复用问题,但依然受队头阻塞困扰,并发能力有限。


三、HTTP/2.0:现代高性能协议的开始

HTTP/2 不是在 1.1 上小修小补,而是底层重构,性能提升巨大。

1. 二进制协议

HTTP/1.1 是文本协议 ,头信息是文本,数据体可以是文本或二进制。HTTP/2 统一为二进制格式,解析更快、更紧凑、更安全。

2. 完全多路复用(Multiplexing)

这是 HTTP/2 最核心的升级。多个请求 / 响应可以在同一个 TCP 连接里同时传输,互不阻塞。

  • 不用排队
  • 不存在队头阻塞
  • 一个连接就能搞定所有资源

对比:

  • HTTP/1.1:一队人排队过独木桥
  • HTTP/2:宽阔大桥,多车道同时跑

3. 头部压缩(HPACK)

HTTP 是无状态协议,每次请求都要带上 Cookie、User-Agent 等大量重复头信息。HTTP/2 对头部进行压缩,大幅减少传输体积。

4. 服务端推送(Server Push)

服务端可以主动向客户端推送资源,不用等客户端请求。比如浏览器请求 HTML,服务端直接把 CSS、JS 一起推过去,减少请求次数。

一句话总结:HTTP/2 更快、更并发、更省流量、支持服务端推送,是现代网站的标配。


四、一张表看懂三者核心区别

表格

特性 HTTP/1.0 HTTP/1.1 HTTP/2.0
连接方式 短连接(默认) 长连接(默认) 长连接 + 多路复用
数据格式 文本 文本 二进制
并发能力 极差 一般(仍有队头阻塞) 极强(无队头阻塞)
头部数据 无压缩 无压缩 HPACK 压缩
服务端推送 不支持 不支持 支持
传输方式 全部生成后传输 支持分块传输 二进制流传输
  1. 服务器未经请求,主动向客户端发送资源。
相关推荐
Anthony_2311 小时前
Nginx基础
服务器·nginx·http·https·edge浏览器·web
myy-learn1 小时前
33-HTTP协议TCP网页设计相关知识
tcp/ip·http
小林ixn21 小时前
跨域、SSE 与 WebSocket:从一次「请求被拦截」说起
websocket·http
小此方1 天前
Linux网络(十一):HTTP重定向与请求方法详解:从301/302状态码到GET/POST,再认识Fiddler抓包
linux·网络·http
Lhappy嘻嘻2 天前
网络(六)|应用层 HTTP&HTTPS:URL、请求响应、Cookie 与证书
网络·http·https
ControlRookie3 天前
第23篇_源码加更 05|HTTP Server、连接实例和诊断数据
http·codesys·plc通信·开源源码
企业数字化笔记3 天前
AI写的网站一直自动跳转怎么办?301、302和HTTPS重定向排查
网络协议·http·https
那年窗外下的雪.3 天前
AIDC 学习日志|第 24 天|设备输出反推与 MAC Flapping 定位
网络协议·学习·tcp/ip·http·macos·tcpdump
sugar__salt3 天前
大模型流式输出完全指南(上):从 HTTP 长连接到手写 SSE
网络·网络协议·http
2601_962885724 天前
不用 SDK 也能取 A 股数据:AlphaFeed REST API用 cURL/HTTP 直连教程
网络·网络协议·http