HTTP/0.9
a.只有一个命令GET
b.没有HEADER等描述数据的信息
c.服务器发送完毕,就关闭TCP链接
HTTP/1.0
a.增加了很多命令,比如说POST 、PUT
b.增加status code和header。
status code是用来描述,服务端处理我们的请求后的它的一个状态。
header 记录了不管是发送和请求的数据的描述,以及如何对数据进行操作的方法。
多字符集支持、多部分发送、权限、缓存等。
HTTP/1.1
a.持久连接
之前的HTTP协议,当服务器发送数据完毕后,就关闭了TCP链接,而每开启
一次链接就要进行客户端和服务端的三次握手,非常消耗性能延迟也非常 高。
b.pipeline
客户端可以在同一个链接里面发送多个请求,但是在服务端一次性只能响应一
个。服务端对发送过来的请求,会按照先后顺序响应。[如果前一个请求处理的时间
比较长,而后一个请求的很短,总的响应时间还是很长,这就是串行和并行的差异]。
c.增加一些其他的HTTP头和命令,比如说host
通过对host头的判断, 可以让我们在同一个物理服务器上跑多个web服务。比
如说,一个node.js的web服务,一个java的web服务。
HTTP2
a.所有的数据以二进制传输
HTTP/1.1是通过字符串进行数据传输,数据的分片方式不一样。HTTP2里面的
数据,是通过帧进行传输的。所以HTTP2里同一个连接发送多个请求不再需要按照
顺序来进行响应,可以并行处理多个请求。
b.头信息压缩以及推送等提高效率的功能
推送是指,服务端不再是被动响应,也可以主动发送数据给客户端。