Http1.0 、1.1、2.0、3.0的区别
巨人的肩膀
3.1 HTTP 常见面试题 | 小林coding
HTTP1.0与HTTP1.1
HTTP1.1在HTTP1.0上的改进:
- 使用长连接的方式改善了HTTP1.0中短连接造成的性能开销
- 支持管道网络传输,不必等到上一个的响应,就可以接着发送第二个请求,减少整体响应时间
HTTP1.1的缺点:
- HTTP报文中的头部信息未经压缩就发送,首部信息开销较大
- 服务器响应是按照请求达到的顺序进行响应的,如果某个响应很慢,就会导致队头阻塞
- 没有请求优先级控制
- 请求只能从客户端开始,服务器只能被动响应
- 明文传输,不安全
HTTP2.0
Http2.0是基于HTTPS的,所以在安全性上得到了保障。
HTTP2.0在HTTP1.1上的改进:
- 头部压缩,头部信息压缩(HPACK算法),传输量减少,性能得到提高
- 采用二进制格式,头信息和body都是二进制,增加了传输效率
- 并发传输,HTTP1.1是基于“请求-响应”方式的,处理完一个事务(请求-响应),才会处理下一个事务,这也是导致队头阻塞的原因。
引入Stream的概念,多个Stream复用一个TCP连接,一个Stream中有多个Message,一个Message 就是一个请求或响应 - 服务器推送,可以主动向客户端发送信息
HTTP2.0的缺点:
- 引入Stream,虽然解决了HTTP层的队头阻塞,但是又导致了TCP层的阻塞
(TCP的滑动窗口中,TCP必须保证接收到的字节数据是完整且连续的,这样才会将接收到的数据上交给上层)
HTTP3.0
HTTP3.0将运输层改成了UDP,(基于UDP的QUIC协议实现最大努力的可靠性交付)
基于UDP的好处:
- 无队头阻塞
- 更快的连接建立
- 连接迁移