HTTP 1.0、HTTP 1.1、HTTP 2.0区别

HTTP 0.9

HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET

1
GET /index.html

上面命令表示,TCP 连接(connection)建立后,客户端向服务器请求(request)网页index.html。
协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。

1
2
3
<html>
<body>Hello World</body>
</html>

  • 客户端请求以及服务端响应都是ASCII码
  • 客户端请求由一个回车换行结尾(CRLF)
  • 服务器响应的是一种超文本语言(HTML)
  • 连接在文档输出完毕之后自动断开

HTTP 1.0

  • 新增POSTHEAD方法

HTTP/1.0版的主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。

HTTP 1.1

  • 默认持久链接
  • 新增多种方法

HTTP 2.0

HTTP 1.1HTTP 2.0的性能对比
HTTP/2: the Future of the Internet

  • 二进制协议
    所有的信息,包括头信息,主体信息都是二进制

  • 头信息压缩

  • 多工

  • 服务器推送

参考

http://www.ruanyifeng.com/blog/2016/08/http.html