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. 服务器未经请求,主动向客户端发送资源。
相关推荐
虾..2 小时前
Linux HTTP协议
linux·运维·http
DongHao18 小时前
我不想一开始就把 Axios 封装的太完美
前端·http·axios
小江的记录本20 小时前
【TCP】TCP三次握手与四次挥手(系统性知识体系+对比表格)
java·服务器·网络·网络协议·tcp/ip·http·tcp
Vect__20 小时前
深刻理解HTTP
网络·网络协议·http
生活很暖很治愈21 小时前
Linux——HTTP协议
linux·服务器·c++·网络协议·ubuntu·http
小江的记录本1 天前
【HTTP】HTTP请求方法与状态码(全体系知识总结+附表格)
前端·网络·后端·网络协议·http·状态模式·web
萝卜白菜。1 天前
http头键名大小写问题
网络·网络协议·http
haixingtianxinghai1 天前
Https的加密机制
网络协议·http·https
隐退山林1 天前
JavaEE初阶:HTTP/HTTPS
http·https·java-ee