HTTP 1.0
无状态、无连接: 每次请求都需要建立新的TCP连接,处理完后立即关闭,导致开销较大。
队头阻塞: 每个请求必须按照顺序依次处理,前面的请求未完成,后面的请求只能等待,降低了并发效率。
不支持持久连接: 每个请求都建立一个新的TCP连接,增加了服务器的负担。
HTTP 1.1
持久连接: 引入了Keep-Alive机制,多个请求可以复用同一个TCP连接,减少了建立连接的开销。
管道化: 允许在同一个TCP连接上同时发送多个请求,提高了并发效率。
Host字段: 可以在同一个IP地址上运行多个虚拟主机。
断点续传: 支持文件传输中断后从断点处继续传输。
HTTP 2.0
二进制分帧: 将HTTP报文分割为更小的二进制帧,提高了传输效率,并支持多路复用。
头部压缩: 减少了HTTP头部的大小,降低了网络开销。
服务器推送: 服务器可以主动向客户端推送资源,减少了客户端的请求次数。
多路复用: 在一个TCP连接上可以同时发送多个请求和响应,解决了HTTP 1.1的队头阻塞问题。
HTTP 3.0
基于QUIC协议: 使用UDP协议,相较于TCP的可靠性,QUIC通过自身实现可靠传输,减少了RTT。
多路复用: 在一个QUIC连接上可以同时传输多个请求和响应,并支持流优先级。
更快的连接建立: 减少了TCP的三次握手和TLS的握手时间。
更低的延迟: 由于QUIC协议的特性,HTTP 3.0具有更低的延迟。
HTTP 1.0、1.1、2.0、3.0的区别
特性 | HTTP 1.0 | HTTP 1.1 | HTTP 2.0 | HTTP 3.0 |
---|---|---|---|---|
连接 | 短连接 | 持久连接 | 持久连接 | QUIC连接 |
传输方式 | 文本 | 文本 | 二进制 | 二进制 |
头部压缩 | 不支持 | 不支持 | 支持 | 支持 |
多路复用 | 不支持 | 部分支持 | 支持 | 支持 |
服务器推送 | 不支持 | 部分支持 | 支持 | 支持 |