Skip to main content

HTTP 协议的发展历史

HTTP/0.9

  • 只有一个命令 GET
  • 没有 HEADER 等描述数据的信息
  • 服务器发送完毕,就关闭 TCP 连接

HTTP 请求和 TCP 连接不是同一个概念, 同一个TCP 连接中可以发送多个 HTTP 请求(此版本不支持)

HTTP/1.0

  • 增加了很多命令(如 POST)
  • 增加status codeheader
  • 多字符集支持、多部分发送、权限、缓存等
  • 一个HTTP请求就要去创建一个TCP连接,创建完TCP连接之后待服务端返回完内容之后,这个TCP连接就关闭掉了

HTTP/1.1

  • 支持持久连接
  • pipeline(同一个连接发送多个请求)
  • 增加 host 和其他一些命令
    • host: 可以在同一台物理服务器跑多个web服务,通过host这个字段判断请求不同的web服务,提高物理服务器效率

HTTP2

  • 所有数据以二进制传输(帧)
  • 同一个连接里面发送多个请求不再需要按照顺序来
  • 头信息压缩以及推送等提高效率,减少带宽使用
    • 头信息压缩: 在HTTP1.1每一次发送请求和返回请求,每一次HTTP头都是需要发送和返回的, 这部分头信息的一些字段以字符串形式保存,占用带宽较大
    • 推送: 之前HTTP请求只能发起请求响应请求返回内容,客户端是主动方,服务端是被动方。HTTP2中服务端可以主动发起数据传输,实现并行传输。(比如在请求HTML的同时可以主动把HTML中引用的HTMLCSS文件推送给客户端)