4. 那在详细说一下 http 2.0 的特点
总结
- 二进制协议:文本通信改为二进制帧通信,数据可以划分为更小的帧,便于高效解析和传输。
- 多路复用:废除 pipeline 管道,避免了“队头阻塞”问题。允许同一个 TCP 连接同时发送多个请求和协议,提高网络资源利用率和页面加载速度。
- 头部信息压缩
- 服务端主动推送
- 数据流
详细说一下 HTTP/2 的特点
HTTP/2 是 HTTP 协议的第二个主要版本,基于 Google 的 SPDY 协议发展而来,旨在解决 HTTP/1.1 中存在的性能瓶颈。HTTP/2 在协议层面进行了多项优化,显著提升了网页加载速度和网络资源利用率。
1. 二进制分帧协议(Binary Protocol)
- 描述:HTTP/2 将原本 HTTP/1.x 中的文本格式通信改为**二进制帧(Frame)**通信。
- 作用:
- 数据被划分为更小的帧(frame),便于高效解析和传输。
- 每个帧都有明确的类型和流标识符,支持多路复用。
- 优势:
- 更易于解析,减少解析错误。
- 提高了协议的可扩展性和性能。
2. 多路复用(Multiplexing)
- 描述:HTTP/2 允许在同一个 TCP 连接上并发发送多个请求和响应。
- 与 pipeline 的区别:
- HTTP/1.1 的 pipeline 仍存在“队头阻塞”问题(Head-of-line blocking)。
- HTTP/2 完全避免了该问题,多个请求可以独立处理、响应。
- 优势:
- 减少连接数。
- 显著提升页面加载速度,尤其是资源较多的页面。
3. 首部压缩(Header Compression)
- 描述:HTTP/2 使用
HPACK
算法对请求和响应头进行压缩。 - 作用:
- 减少重复头部信息带来的冗余流量。
- 支持上下文感知的压缩机制。
- 优势:
- 减少带宽占用。
- 加快数据传输速度。
4. 服务器推送(Server Push)
- 描述:服务器可以在客户端未主动请求时,提前将资源推送到客户端缓存中。
- 应用场景:
- 页面中引用的 CSS、JS 文件。
- 图片等静态资源。
- 优势:
- 减少往返次数(RTT)。
- 提前加载关键资源,加快页面渲染。
5. 数据流(Streams)
- 描述:HTTP/2 引入“流”的概念,每个请求/响应对应一个独立的数据流。
- 特性:
- 每个流有唯一 ID。
- 支持优先级设置,浏览器可指定哪些资源优先加载。
- 优势:
- 更细粒度地控制资源加载顺序。
- 提升用户体验。
6. 基于 TLS(通常为 HTTPS)
- 描述:虽然不是强制要求,但主流实现中 HTTP/2 通常运行在 TLS(加密通道)之上。
- 优势:
- 提供安全性保障。
- 被主流浏览器广泛支持。
总结对比表
特性 | HTTP/1.1 | HTTP/2 |
---|---|---|
通信格式 | 文本 | 二进制帧 |
并发请求 | 队头阻塞 | 多路复用,无队头阻塞 |
首部压缩 | 无 | 使用 HPACK 压缩 |
服务器推送 | 不支持 | 支持 |
数据流 | 无 | 支持流和优先级 |
连接数量 | 多个并发连接 | 单个连接即可完成所有请求 |
安全性 | 可选 | 通常基于 HTTPS |