HTTP/1.1
1.1相比1.0的变化:
- Connection: keep-alive 持久连接(默认)
- pipelining 管道机制(同一个TCP连接中,客户端可以同时发送多个请求,但服务端还是按顺序响应)
- Content-Length字段
- Transfer-Encoding: chunked 分块传输编码
- 头信息增加了Host字段
- 新增了许多动词方法:PUT、PATCH、HEAD、OPTIONS、DELETE。
缺点:
虽然允许复用TCP连接,但数据通信是按次序进行的,可能会出现“队头堵塞”。
HTTP/2
基于SPDY协议。
2相比1.1的变化:
- 二进制协议,头信息、数据体都是二进制;而1.1头信息肯定是文本,数据体可以是文本也可以是二进制。
- 多工。复用TCP连接,在一个连接中,客户端和服务端都可以同时发送多个请求或回应,且不用按照顺序一一对应,避免了“队头堵塞”。
- 数据流。每个请求或回应的数据包,称为一个数据流。每个数据流都有一个独一无二的编号。数据流发送到一半的时候,客户端和服务端都可以发送信号取消该数据流。
- 头信息压缩。头信息压缩后发送,并且客户端和服务端同时维护一张头信息表,所有字段都会存入该表,生成一个索引号,后续客户端只发送索引号。
- 服务器推送。