严格来说,没有 HTTP 1.2 这个正式标准协议。

HTTP 协议的主要版本发展如下:

  1. HTTP/0.9(1991)

  2. HTTP/1.0(1996)

  3. HTTP/1.1(1997,最广泛使用)

  4. HTTP/2(2015)

  5. HTTP/3(2022)

很多人说的“HTTP1.2”通常是以下几种情况:

  • 口误,实际上指 HTTP/2

  • 某些厂商内部版本号,并非 IETF 标准

  • 对 HTTP/1.1 的增强实现误称为 HTTP1.2


HTTP/1.0 与 HTTP/1.1 的区别

1. 长连接(Keep-Alive)

HTTP/1.0

每个请求都需要建立 TCP 连接:

建立TCP连接
↓
发送请求
↓
返回响应
↓
关闭连接

访问一个页面:

index.html
style.css
main.js
logo.png

可能建立 4 次 TCP 连接。


HTTP/1.1

默认开启长连接:

建立TCP连接
↓
请求1
↓
响应1
↓
请求2
↓
响应2
↓
关闭连接

优点:

  • 减少 TCP 握手

  • 降低延迟

  • 提高性能


2. Host 头支持

HTTP/1.0:

GET /index.html HTTP/1.0

服务器不知道访问哪个网站。


HTTP/1.1:

GET /index.html HTTP/1.1
Host: www.example.com

同一 IP 可以部署多个网站(虚拟主机)。


3. 管道化(Pipelining)

HTTP/1.1 新增:

请求1
请求2
请求3

不用等待响应。

但实际浏览器支持不好,后来被 HTTP/2 多路复用取代。


4. 缓存机制更完善

HTTP/1.0:

If-Modified-Since
Expires

HTTP/1.1 新增:

Cache-Control
ETag
If-None-Match

例如:

Cache-Control: max-age=3600

比 Expires 更灵活。


5. 分块传输(Chunked)

HTTP/1.0:

必须知道内容长度:

Content-Length: 1024

HTTP/1.1:

支持:

Transfer-Encoding: chunked

边生成边发送:

4
Wiki

5
pedia

0

适用于:

  • 文件下载

  • 流式响应

  • SSE


HTTP/1.1 与 HTTP/2 的区别

HTTP/1.1

存在队头阻塞(Head Of Line Blocking)

请求1 -> 响应1
请求2 -> 等待
请求3 -> 等待

HTTP/2

多路复用:

TCP连接
├── Stream1
├── Stream2
├── Stream3
└── Stream4

多个请求同时进行。


HTTP/2 新特性

二进制帧

HTTP/1.1:

纯文本

HTTP/2:

二进制 Frame

解析效率更高。


Header 压缩

使用:

HPACK

减少重复 Header 传输。

例如:

Cookie
User-Agent
Authorization

不会每次完整发送。


Server Push(现已基本废弃)

服务器主动推送:

请求 index.html
↓
服务器顺带推送
style.css
main.js

面试常问

为什么 HTTP/2 比 HTTP/1.1 快?

答案:

  1. 多路复用

  2. Header 压缩

  3. 二进制传输

  4. 减少 TCP 连接数量

  5. 降低网络延迟


总结

特性HTTP/1.0HTTP/1.1HTTP/2
长连接❌✅ 默认开启✅
Host头❌✅✅
管道化❌✅✅(多路复用)
Chunked❌✅✅
Header压缩❌❌✅
二进制传输❌❌✅
多路复用❌❌✅

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐