http0.9
- 只有get请求
- 服务端返回的格式只有html文本
- 服务端响应对应数据之后就自动关闭链接
http1.0
- 图像、视频、文字等富文本信息都支持传输
- 新增get、put等请求
- 新增http header,状态码,缓存等基本功能
- 每次请求完毕之后依旧会自动断开链接
http1.1
-
新增Connection: keep-alive,请求结束之后,依旧保持连接。客户短发送Connection: close的参数,要求服务端关闭链接
-
管道机制
- 允许客服端一次发送多个请求,然后服务端依次处理请求内容【头部队列阻塞】
- content-length用于识别不同的请求
- 分块传输编码
- http/1.1 200 ok
- Content-type: text/plain
- Transfeer-Encoding: chunked
- 又新增多种请求方式:PATCH、HEAD、OPTIONS、DELETE等请求方式
http2.0
-
二进制传输数据(参数优化策略) 原先http1.1的时候,头部信息使用文本信息传输,body信息可以使用文本或着二进制传输,但是http2.0为了后边更好的扩展性和提高性能,将其全部统一为二进制传输
-
服务端主动推动。 例如:websocket
-
多路复用 解决【头部队列阻塞】,ABCD四个请求,A耗时较大,A处理部分立马返回,然后处理后面的请求
-
数据流 帧,用于标记请求和响应之间的关系
-
头部压缩 HPACK:可以简单理解为客服端和服务端分别维护一张表,传输索引。
总结
- 文本传输格式越来丰富
- 发展中兼容前面版本