HTTP协议有以下主要版本:
- HTTP/0.9:HTTP最初的版本,只支持GET请求。
- HTTP/1.0:添加了请求方法和头部字段,支持长连接。
- HTTP/1.1:添加了更多头部字段,默认支持长连接,管道化和分块传输编码。
- HTTP/2:二进制分帧层,支持请求优先级、服务器推送、头部压缩和多路复用。
- HTTP/3:基于UDP的QUIC协议,支持0-RTT连接和流控制。
主要区别如下:
- HTTP/1.1支持长连接和分块编码,HTTP/1.0需要手动设置。
- HTTP/1.1管道化请求,一个连接可以并发请求。HTTP/1.0一个连接只能串行请求。
- HTTP/2.0二进制分帧,支持请求优先级、服务器推送、头部压缩和多路复用。HTTP/1.1基于文本。
- HTTP/3基于QUIC,连接层面加密,0-RTT连接和UDP。HTTP/2.0基于TCP,需要TLS加密。
代码示例:
HTTP/1.0短连接:
GET /1 HTTP/1.0
HTTP/1.0 200 OK
GET /2 HTTP/1.0
HTTP/1.0 200 OK
HTTP/1.1长连接:
GET /1 HTTP/1.1
Connection: Keep-Alive
HTTP/1.1 200 OK
GET /2 HTTP/1.1
HTTP/1.1 200 OK
HTTP/2.0多路复用:
GET /1 HTTP/2
GET /2 HTTP/2
HTTP/2 200 OK // 响应乱序
HTTP/2 200 OK
HTTP/3 QUIC连接:
// 建立QUIC连接,使用TLS 1.3进行握手
GET /1 HTTP/3
HTTP/3 200 OK // 0-RTT连接