HTTP/0.9
- 只有一个命令
GET
- 没有
HEADER
等描述数据的信息
- 服务器发送完毕,就关闭
TCP
连接
HTTP
请求和 TCP
连接不是同一个概念, 同一个TCP
连接中可以发送多个 HTTP
请求(此版本不支持)
HTTP/1.0
- 增加了很多命令(如
POST
)
- 增加
status code
和 header
- 多字符集支持、多部分发送、权限、缓存等
- 一个
HTTP
请求就要去创建一个TCP
连接,创建完TCP
连接之后待服务端返回完内容之后,这个TCP
连接就关闭掉了
HTTP/1.1
- 支持持久连接
- pipeline(同一个连接发送多个请求)
- 增加
host
和其他一些命令
host
: 可以在同一台物理服务器跑多个web服务,通过host
这个字段判断请求不同的web服务,提高物理服务器效率
HTTP2
- 所有数据以二进制传输(帧)
- 同一个连接里面发送多个请求不再需要按照顺序来
- 头信息压缩以及推送等提高效率,减少带宽使用
- 头信息压缩: 在
HTTP1.1
每一次发送请求和返回请求,每一次HTTP
头都是需要发送和返回的, 这部分头信息的一些字段以字符串形式保存,占用带宽较大
- 推送: 之前
HTTP
请求只能发起请求响应请求返回内容,客户端是主动方,服务端是被动方。HTTP2
中服务端可以主动发起数据传输,实现并行传输。(比如在请求HTML
的同时可以主动把HTML
中引用的HTML
和CSS
文件推送给客户端)