http1.0、http2.0、http3.0 之间的区别
http1.0
每次请求和响应完毕后都会销毁 TCP
连接,同时规定前一个相应完成后才能发送下一个请求。这样做会有两个问题:
无法复用连接
:每次请求都要创建新的TCP
请求,完成三次握手和四次挥手,网络利用率低。队头阻塞
:如果前一个请求被某种原因阻塞了,会导致后续请求无法发送。
http2.0
http2.0
进一步优化了传输效率,它主要有以下改进:
二进制分帧
:将传输的消息分为更小的二进制帧,每帧有自己的识别序号,即便被随意打乱也能在另一端正常组装多路复用
:基于二进制分帧,在同一个域名下所有访问都是从同一个TCP
连接走,并且不再有队头阻塞问题,也无须遵守响应顺序。头部压缩
:http2.0
通过字典的方式,将头部中常见的信息替换为更少的字符,极大的减少了头部的数据量,从而实现更小的传输量。服务器推送
:http2.0
允许服务器直接推送消息给客户端,无须客户端明确的请求。
http3.0
http3.0
目前还在草案阶段,它完全抛弃了 TCP
协议,转而使用 UDP
协议,是为了进一步提升性能。
虽然 http2.0
进行了大量的优化,但它无法摆脱 TCP
协议本身的问题,比如建立连接时间长、队头阻塞问题等等。
为了保证传输的可靠性,http3.0
使用了 QUIC
协议作为传输层协议。