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. 服务器未经请求,主动向客户端发送资源。
相关推荐
0+1116 小时前
Linux --应用层协议HTTP
网络·网络协议·http
To_OC19 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
小贺儿开发1 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
剑锋所指,所向披靡!2 天前
HTTP服务器的基本相关概念
服务器·网络协议·http
可乐鸡翅yeah_2 天前
新手梳理:HLS 线上问题,哪些该提给 CDN,哪些该找后端切片服务
开发语言·前端·javascript·vue.js·网络协议·http·m3u8在线
m0_738185822 天前
Flutter 鸿蒙化实战:http_proxy 适配 OpenHarmony,HTTP 代理
flutter·http·华为·harmonyos·鸿蒙
91刘仁德3 天前
HTTP协议详解:从URL到HTTP服务器的完整实战
服务器·网络·笔记·网络协议·http
可乐鸡翅yeah_3 天前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
AIgorithmGEEK3 天前
[Linux]HTTP 应用层协议全解(下篇)
linux·网络·网络协议·http·cookie·无连接·无状态
AIgorithmGEEK3 天前
[Linux]HTTP 应用层协议全解(中篇)
linux·网络·网络协议·http