HTTP3.0彻底放弃TCP,TCP到底做错了什么?


从HTTP/1.0开始,一直到HTTP/2,不管应用层协议如何改进,TCP一直以来都是HTTP协议的基础,主要是因为他能提供可靠连接。

但是,从HTTP 3.0开始,这个情况就有所变化了。

因为,在最新推出的HTTP 3.0中,已经彻底弃用TCP协议了。



TCP队头阻塞

我们知道,TCP传输过程中会把数据拆分为一个个**按照顺序**排列的数据包,这些数据包通过网络传输到了接收端,接收端再**按照顺序**将这些数据包组合成原始数据,这样就完成了数据传输。

但是如果其中的某一个数据包没有按照顺序到达,接收端会一直保持连接等待数据包返回,这时候就会阻塞后续请求。这就发生了**TCP队头阻塞。**

HTTP/1.1的管道化持久连接也是使得同一个TCP链接可以被多个HTTP使用,但是HTTP/1.1中规定一个域名可以有6个TCP连接。而HTTP/2中,同一个域名只是用一个TCP连接。

所以,在HTTP/2中,TCP队头阻塞造成的影响会更大,因为HTTP/2的多路复用技术使得多个请求其实是基于同一个TCP连接的,那如果某一个请求造成了TCP队头阻塞,那么多个请求都会受到影响。



TCP握手时长

我们都知道TCP的可靠连接是基于三次握手与四次挥手实现的。但是问题是三次握手是需要消耗时间的。

TCP三次握手的过程客户端和服务器之间需要交互三次,那么也就是说需要额外消耗1.5 RTT。

RTT:网络延迟(Round Trip Time)。他是指一个请求从客户端浏览器发送一个请求数据包到服务器,再从服务器得到响应数据包的这段时间。RTT 是反映网络性能的一个重要指标。

在客户端和服务端距离比较远的情况下,如果一个RTT达到300-400ms,那么我握手过程就会显得很”慢”了。



升级TCP

基于上面我们提到的两个问题,有人提出来说:既然TCP存在这些问题,并且我们也知道这些问题的存在,甚至解决方案也不难想到,为什么不能对协议本身做一次升级,解决这些问题呢?

其实,这就涉及到一个”协议僵化“的问题。

这样讲,我们在互联网上浏览数据的时候,数据的传输过程其实是极其复杂的。

我们知道的,想要在家里使用网络有几个前提,首先我们要通过运行商开通网络,并且需要使用路由器,而路由器就是网络传输过程中的一个中间设备。

中间设备是指插入在数据终端和信号转换设备之间,完成调制前或解调后某些附加功能的辅助设备。例如集线器、交换机和无线接入点、路由器、安全解调器、通信服务器等都是中间设备。

在我们看不到的地方,这种中间设备还有很多很多,一个网络需要经过无数个中间设备的转发才能到达终端用户。

如果TCP协议需要升级,那么意味着需要这些中间设备都能支持新的特性,我们知道路由器我们可以重新换一个,但是其他的那些中间设备呢?尤其是那些比较大型的设备呢?更换起来的成本是巨大的。

而且,除了中间设备之外,操作系统也是一个重要的因素,因为TCP协议需要通过操作系统内核来实现,而操作系统的更新也是非常滞后的。

所以,这种问题就被称之为”中间设备僵化”,也是导致”协议僵化”的重要原因。这也是限制着TCP协议更新的一个重要原因。

所以,近些年来,由IETF标准化的许多TCP新特性都因缺乏广泛支持而没有得到广泛的部署或使用!



QUIC

所以,摆在HTTP/3.0面前的就只有一条路,那就是放弃TCP。

于是,HTTP/3.0在基于UDP+迪菲赫尔曼算法(Diffie–Hellman)之上实现了QUIC协议(Quick UDP Internet Connections)。

QUIC协议有以下特点:

基于UDP的传输层协议:它使用UDP端口号来识别指定机器上的特定服务器。

可靠性:虽然UDP是不可靠传输协议,但是QUIC在UDP的基础上做了些改造,使得他提供了和TCP类似的可靠性。它提供了数据包重传、拥塞控制、调整传输节奏以及其他一些TCP中存在的特性。

实现了无序、并发字节流:QUIC的单个数据流可以保证有序交付,但多个数据流之间可能乱序,这意味着单个数据流的传输是按序的,但是多个数据流中接收方收到的顺序可能与发送方的发送顺序不同!

快速握手:QUIC提供0-RTT和1-RTT的连接建立

使用TLS 1.3传输层安全协议:与更早的TLS版本相比,TLS 1.3有着很多优点,但使用它的最主要原因是其握手所花费的往返次数更低,从而能降低协议的延迟。



阻碍

以上,我们介绍了很多QUIC的相比较于TCP的优点,可以说这种协议相比较于TCP确实要优秀一些。

因为他是基于UDP的,并没有改变UDP协议本身,只是做了一些增强,虽然可以避开中间设备僵化的问题,但是,在推广上面也不是完全没有问题的。

首先,很多企业、运营商和组织对53端口(DNS)以外的UDP流量会进行拦截或者限流,因为这些流量近来常被滥用于攻击。

特别是一些现有的UDP协议和实现易受放大攻击(amplification attack)威胁,攻击者可以控制无辜的主机向受害者投放发送大量的流量。

所以,基于UDP的QUIC协议的传输可能会受到屏蔽。

另外,因为UDP一直以来定位都是不可靠连接,所以有很多中间设备对于他的支持和优化程度并不高,所以,出现丢包的可能性还是有的。。。

但是不管怎么样,HTTP/3.0的时代一定会到来的,QUIC协议全面代替TCP的时代也会到来的,让我们拭目以待吧。


- EOF -

推荐阅读点击标题可跳转

SpringBoot 生产中 16 条最佳实践

Java 8 Stream 数据流效率分析

Tomcat太重,Undertow轻量多了~

看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

点赞和在看就是最大的支持❤️

担心车辆常在汇流处争抢道甚至引发交通事故?“拉链式”交替通行,了解一下!近年来,多个城市全面推行交替通行交警部门将会对对抢道行为进行重点管理违法必被罚!01什么是..

小的时候总会幻想长大了要成为多么了不起的人、要挣大钱,等大学毕业了才知道钱没有那么好挣,大家也都是普通人,能安稳的过这一生就已经很知足了。最安稳的工作非体制内莫..

近日,一篇题为《因为NCT DREAM粉丝而拉起警戒线的高尺天空巨蛋现状》的热帖引发了激烈讨论。事情的起因是7月27日晚,因成员Mark和仁俊接连确诊新冠,SM娱乐方面决定..

3月17日,江苏省常州市、北京市召开疫情防控新闻发布会,通报最新疫情情况,并作出防控提示。提示一:注意戴口罩!常州一家长接孩子未戴口罩致30多人感染3月17日,江苏省常..

来源 |王耳朵先生ID | huangezishiba在我身边,没有人从事这样的工作。所以看见这条新闻的时候,我第一反应是惊讶,随后是敬佩。95后姑娘小任(化名),201..

去年夏天,威少在一笔重磅交易中回到家乡洛杉矶,加盟儿时最爱的球队湖人,跟詹姆斯、安东尼-戴维斯组成湖人新一代三巨头,阵中还有安东尼、霍华德这样的名人堂老将,他们..

关于养狗这件事情,不管是网络上还是现实中,总是会有些争议。反对养狗的人理由很多,比如狗狗拉粑粑影响环境,会咬人伤害人类等等。而支持养狗的人觉得狗狗是种陪伴,只很..

点击"班主任家园"关注我们孩子平时做题做错了,当父母问及他们原因时,听到的答案往往是“我太粗心了”。如果简单地把过错归结于粗心,就会掩盖真正的原因,也让孩子轻易原..

最近一段时间挺流行怀旧——周杰伦的演唱会人气还是那么老高,男女老少又哼起了王心凌的《爱你》,搞得我一时有点分不清这是2022还是2002。2002年的你多大?当时过生日,蛋..

前两天和大家分享的玉米老式大饼干,很多朋友做过以后,都说特别好吃,超开森~再和大家分享一款玉米小饼的做法,红枣玉米饼。这个做好后,口感介于麦芬蛋糕与饼干之间,非..

对于养花新手来说,在室内养花时,保持盆土干透浇透是极其关键的,学会判断土壤的干湿情况,了解清楚什么时候给植物浇水,不要水多或水少,室内的绝大部分的盆栽绿植都可以..

昨天是三九,三九天!最冷的日子到了,最危险的日子也来了!三九天,是“夺命天”!俗话说“冷在三九”,寒冷不止带来体感上的不适,还会给心血管带来压力。据调查,我国的..

「血化验提示高钾,报告危急值」22 岁女性患者,因「感染、发热」在我院住院,诊断为「败血症」。实验室检查:图片来源:作者提供(血常规检测结果)图片来源:作者提..

“哼!牛牛就是个扫把星,谁碰着他,谁倒霉!他把我的课本和作业本全弄到了地上!妈妈,都怪你,你不看好他!”这天早上吃饭时,哥哥气呼呼地指责弟弟和我!“你还想要三妹..

中医养生科普今日三九!最冷的日子到了,最危险的日子也来了!三九天,是“夺命天”!俗话说“冷在三九”,寒冷不止带来体感上的不适,还会给心血管带来压力。据调查,我国..

明日三九!最冷的日子到了,最危险的日子也来了!三九天,是“夺命天”!俗话说“冷在三九”,寒冷不止带来体感上的不适,还会给心血管带来压力。据调查,我国的心血管病的..

中医养生科普“过年时,我感觉自己有点着凉,就擅自去药店配药,结果肾功能急剧恶化,肌酐值一下子飙到了1000umol/L,被确诊为尿毒症。”在新冠肺炎疫情开始之前,感冒一直..

我做领导的每天学习新理论、新方法,可为什么就是无法带动团队改变?签定了绩效责任,员工一个个看起来也在加班加点努力干,可为什么仍然做不出成绩?是因为员工执行力差吗..

本文由 ImportNew 来源发布

HTTP3.0彻底放弃TCP,TCP到底做错了什么?

评论问答