序言
上节提到HTTP3通过更加底层的传输层的优化来提升效率,究竟如何,让我们一起看一下。
HTTP3的优化
image.png通过这个图片,我们可以很清楚的看到,HTTP2和HTTP3的传输层是完全不同的协议,HTTP3的传输层是UDP协议。我们知道UDP协议是个不可靠的协议,而TCP协议是可靠协议,怎样保证可靠的呢,重传。
QUIC协议
在UDP协议之上,新增了QUIC协议。我的理解是由于TCP协议相对于UDP协议控制比较复杂耗时,因此针对HTTP应用贴身开发了QUIC协议代替TCP协议中关于可靠、流量控制的部分。
- QUIC协议特性
- QUIC协议提供类似于HTTP2的流功能
- QUIC协议使用流ID取代IP和端口,这样就能实现连接迁移。例如说从4G信号切换到wifi,下层的IP和端口变了,但是由于QUIC的流ID没有变,这个连接不会变,可以继续使用这个连接。
然后我们看一下HTTP3在QUIC上有什么变化呢?HTTP3由HTTP2进化,HTTP2最大的变化就是基于二进制流的传输。那么到HTTP3,由于QUIC已经管理了流,HTTP3本身就减负了,将流管理下移QUIC,而本身就直接调用QUIC的接口就可以了。
HTTP3如何工作
- 我们回想一下HTTPS,HTTPS是类似于TCP握手的工作方式,先工作在HTTP1上,通过HTTP1传递交换得到秘钥,然后切换到HTTPS上工作。
- 接着我们回想一下HTTP2,HTTP2也是基于TLS的,所以HTTP2的工作方式和HTTPS也是同样的过程,需要握手建立TLS连接,只是TLS连接完成后,发送一个HTTP2的连接确认消息,确认后,客户端服务器使用HTTP2进行连接通讯。
- 最后让我们看下HTTP3如何工作。首先要建立好HTTP2连接,然后发送HTTP2扩展帧,这个帧包含IP和端口,浏览器收到扩展帧,使用该IP和端口,使用QUIC建立连接,如果成功,断开HTTP2,升级为HTTP3。
这三者,都用TCP的握手协议去理解,都是握手,不同的是握手方式不一样。
小结
HTTP3是在基础上动土,对于技术族来说可谓是脑洞大开。这就又说明了基础的重要性。
网友评论