跳到主要内容

HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于Web通信的主要协议。随着互联网的发展,HTTP也经历了多个版本的演进。以下是对HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3的详细介绍及其主要特性。

HTTP/1.0

特点
  • 无状态:每个请求都是独立的,服务器不会保存之前请求的状态。
  • 短连接:每次请求/响应对都会建立和关闭一次TCP连接,导致频繁的连接建立和关闭,增加了延迟。
  • 文本协议:请求和响应都是纯文本格式,容易阅读和调试
GET /index.html HTTP/1.0
Host: www.example.com

HTTP/1.1

特点
  • 持久连接(Persistent Connection):默认使用持久连接,即一个TCP连接可以发送多个请求和响应,减少了连接建立和关闭的开销。
  • 管道化(Pipelining):允许在同一个TCP连接上并行发送多个请求,但服务器必须按顺序响应。
  • 分块传输编码(Chunked Transfer Encoding):支持在响应中分块传输数据,适用于动态生成的内容。
  • 缓存控制:引入了更多的缓存控制头,如 Cache-Control,以更精细地控制缓存行为。
  • Host头:强制要求请求中必须包含 Host 头,以支持虚拟主机
GET /index.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

HTTP/2 特点 二进制协议:与HTTP/1.x的文本协议不同,HTTP/2使用二进制格式,更高效。 多路复用(Multiplexing):在一个TCP连接上可以并行发送多个请求和响应,解决了HTTP/1.1中队头阻塞(Head-of-Line Blocking)的问题。 头部压缩(Header Compression):使用HPACK算法对头部进行压缩,减少了带宽消耗。 服务器推送(Server Push):服务器可以在客户端请求之前主动推送资源,提高页面加载速度。 流优先级:可以为不同的流设置优先级,以优化资源分配。 典型请求示例 HTTP/2的请求示例与HTTP/1.x类似,但底层使用二进制格式,因此人类不可读。

HTTP/3 特点 基于QUIC协议:HTTP/3基于UDP的QUIC协议,实现了更快速的连接建立和数据传输。 减少延迟:QUIC通过减少握手时间和更高效的拥塞控制算法,显著降低了延迟。 内置加密:QUIC默认使用TLS加密,提供更高的安全性。 连接迁移:支持在网络环境变化(如切换网络)时保持连接不中断,提高了连接的稳定性和可靠性。 典型请求示例 HTTP/3的请求示例与HTTP/1.x类似,但底层使用QUIC协议,因此人类不可读。

:method: GET
:scheme: https
:authority: www.example.com
:path: /index.html
特性HTTP/1.0HTTP/1.1HTTP/2HTTP/3
连接管理短连接持久连接持久连接,支持多路复用基于QUIC,支持多路复用
数据格式文本文本二进制二进制
多路复用不支持支持(局限)支持支持
头部压缩不支持不支持支持(HPACK)支持(QPACK)
服务器推送不支持不支持支持支持
安全性通过TLS内置加密TLS
连接建立TCP三次握手TCP三次握手TCP三次握手