http3不再使用tcp协议的原因

举报
伯约同学 发表于 2022/02/22 22:00:31 2022/02/22
【摘要】 http3不再使用tcp协议的原因上一篇文章整理了http0.9-http3的整个变化过程,但是说的不是很详细。比如浏览器是如何利用http1.1的,多个请求如何处理?http2到http3的底层协议特点以及对应的改变背景都没有说清楚。今天就专门针对http3不再使用底层的tcp协议这个问题作为引子,详细阐述下对应的改变原因。首先说我们经常提到的**TCP协议**: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的缺点,那就是后话了,等五年后有兴趣了我再来补充!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。