HTTP知多少
Posted 滨州医学院网络信息中心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP知多少相关的知识,希望对你有一定的参考价值。
虽然HTTP/2标准在2015年5月就正式发表了,并且多数浏览器在2015年底就支持了。
但是,真正被广泛使用起来要到2018年左右,但是也是在2018年,11月IETF给出了官方批准,认可HTTP-over-QUIC成为HTTP/3。
根据W3Techs的数据,截至2019年6月,全球也仅有36.5%的网站支持了HTTP/2。所以,可能很多网站还没开始支持HTTP/2,HTTP/3就已经来了。
所以,对于很多网站来说,或许直接升级HTTP/3是一个更加正确的选择。
让我们来看看在TCP上运行HTTP/2的局限性,并深入了解一下基于QUIC协议的HTTP/3的设计思想。
HTTP/2 的问题
01|队头阻塞
HTTP/2在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
但TCP队头阻塞造成的影响会更大,因为HTTP/2的多路复用技术使得多个请求其实是基于同一个TCP连接的,那如果某一个请求造成了TCP队头阻塞,那么多个请求都会受到影响。
02|握手时长
TCP三次握手的过程客户端和服务器之间需要交互三次,那么也就是说一个纯HTTP/2的连接需要消耗1.5 RTT(往返时延)。
而具体消耗的时长根据服务器和客户端之间的距离则不尽相同。如果距离较远一个RTT的耗时将达到300-400ms,那么,一次连接建立过程总耗时可能要达到一秒钟左右,这时候,用户就会明显的感知到网页加载很慢。
03|协议僵化
我们在互联网上浏览数据的时候,数据的传输过程其实是极其复杂的。
想要在家里使用网络有几个前提,首先我们要通过运行商开通网络,并且需要使用路由器,而路由器就是网络传输过程中的一个中间设备。
在我们看不到的地方,这种中间设备有很多很多,一个网络需要经过无数个中间设备的转发才能到达终端用户。
如果TCP协议需要升级,那么意味着需要这些中间设备都能支持新的特性,虽然我们都知道路由器随时可以重新换一个,可其他的那些中间设备呢?尤其是那些比较大型的设备,要更换起来的成本是巨大的。
放弃TCP?
上面提到的这些问题的根本原因都是因为HTTP/2是基于TCP实现导致的,而TCP协议自身的升级又是很难实现的。
那么,剩下的解决办法就只有一条路,那就是放弃TCP协议。
创造新的协议一样会受到中间设备僵化的影响。近些年来,因为在互联网上部署遭遇很大的困难,创造新型传输层协议的努力基本上都失败了。
所以,想要升级新的HTTP协议,那么就只剩一条路可以走了,那就是基于已有的协议做一些改造和支持,将TCP转为UDP就是一个绝佳的选择了(UDP的相关知识参考)。
总结
因为HTTP/2底层是采用TCP协议实现的,虽然解决了HTTP队头阻塞的问题,但是对于TCP队头阻塞的问题却无能为力。
而因为很多中间设备比较陈旧,更新换代成本巨大,这就导致TCP协议升级或者采用新的协议基本无法实现。所以,HTTP/3选择了一种新的技术方案,那就是基于UDP做改造,这种技术叫做QUIC。
关于QUIC和HTTP/3我们将在下期推文中深入分析。敬请期待!
TO BE CONTINE
部分图文来源于网络
本期编辑:古龙豪
栏目策划:张晓涵
责任编辑:王泽
审核:曹晏宁
以上是关于HTTP知多少的主要内容,如果未能解决你的问题,请参考以下文章