版本 | 产生时间 | 内容 | 发展现状 |
---|---|---|---|
HTTP/0.9 | 1991年 | 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 | 没有作为正式的标准 |
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
HTTP1.1
- 如何处理长连接
如果没有设置超时时间,服务端可能通过四次挥手断开TCP连接;
TCP还有心跳包来检测连接是否存在
HTTP2.0
HTTP2.0与HTTP1.1比较
-
(1)采用二进制格式而非文本格式
二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少 -
(2)完全多路复用的,而非有序并阻塞的
多路复用:通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。
-
(3)使用报头压缩,降低了开销
-
(4)让服务器可以将响应主动“推送”到客户端缓存中