http3不再使用tcp协议的原因

http3不再使用tcp协议的原因

上一篇文章整理了http0.9-http3的整个变化过程,但是说的不是很详细。比如浏览器是如何利用http1.1的,多个请求如何处理?http2到http3的底层协议特点以及对应的改变背景都没有说清楚。

今天就专门针对http3不再使用底层的tcp协议这个问题作为引子,详细阐述下对应的改变原因。

首先说我们经常提到的TCP协议

TCP协议通过数据分片、到达确认、超时重发、滑动窗口、失序处理、重复处理、数据校验等规定,为使用TCP连接的双方提供一个面向连接、可靠的字节流服务。

但是TCP连接这个概念还是比较抽象。

我们可以这么理解,电话两端有两个接线员,电话之间通过电话线进行连接。在正式通话时,电话员A向接线员B拨号并说了这么一句话:有人吗?接线员B回了一句:我在!接线员A又说道:ok我知道了。这相当于TCP连接建立时的三次握手,用来确定双方状态。之后两边电话员就可以正常你来我往的通话了。

同时为了避免两个人的沟通内容有缺失等问题,两边还规定了如何交流,信号中断了如何处理等等。

TCP断开时则需要进行四次挥手过程,这个就没必要细说了。至于为什么是前三后四,这是因为校验太多了也没用,所以就采取了最少验证次数。

接下来聊聊UDP协议

我们要知道,它最大的特点是无连接。也就是信息在传输数据之前不需要建立连接,当想要发送数据时,就把数据包尽可能快地扔到网络上,至于收没收到,就不管了(虽然这很重要)

那么,既然UDP协议这么不可靠,HTTP3为何还要使用UDP协议?

我们在上一篇文章中也讲到了HTTP2的一些问题,其中基于TCP协议的HTTP协议永远无法解决队头阻塞的问题,这样的话,数据传输速度无法进一步加快。

HTTP3是基于UDP协议的,它同时还做了一些其他处理,比如增加数据包重传、拥塞控、调整传输节奏等等。其其核心思想是将TCP协议在内核实现的诸如可靠传输、流量控制、拥塞控制等功能转移到用户态来实现,同时在加密传输方向的尝试也推动了TLS1.3的发展。

至于说http3的缺点,那就是后话了,等五年后有兴趣了我再来补充!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值