超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,俗称HTTP协议。
HTTP1.0
http1.0版本是相对较落后的版本,在功能上支持如下:
- TCP连接不可复用,且一个TCP连接只能发送一次请求,当服务器响应后,就会关闭这次连接。这样导致每次请求都需要重新建立TCP连接(三次握手),影响发送速率;
- 支持发送的http请求方式有get、post、head;
HTTP1.1
- 实现长连接,即TCP连接默认不关闭,允许被多个请求复用,不用申明Connection: keep-alive;
- 提供管道机制,即一个TCP连接中,允许多个请求同时发送,增加并发性,但是服务器还是根据得到请求的先后顺序去进行响应,这种机制容易造成队头阻塞;
- 请求方式增加put、patch、options、delete等;
- 请求头新增host字段,用来处理服务器存在多个虚拟主机的情况;
- 提供身份认证机制,许多web站点要求用户提供一个用户名—口令对才能访问存放在其服务器中的文档,这种要求称为身份认证(authentication)。HTTP提供特殊的状态码和头部来帮助Web站点执行身份认证。
HTTP2.0
- 增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题;
- 服务器推送功能,当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源;
- 支持二进制帧的格式来传递报头和数据;
- 头信息压缩机制,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,以达到速度提升的目的。