HTTP知多少

Posted 滨州医学院网络信息中心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP知多少相关的知识,希望对你有一定的参考价值。

虽然HTTP/2标准在2015年5月就正式发表了,并且多数浏览器在2015年底就支持了。

但是,真正被广泛使用起来要到2018年左右,但是也是在2018年,11月IETF给出了官方批准,认可HTTP-over-QUIC成为HTTP/3。

HTTP知多少(二)

根据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队头阻塞,那么多个请求都会受到影响。

HTTP知多少(二)

02|握手时长

HTTP知多少(二)

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知多少的主要内容,如果未能解决你的问题,请参考以下文章

Fiddler原理~知多少?

Fiddler原理~知多少?

HTTPS与数字证书知多少

http Content-Type 知多少

❲HTTP协议知多少❳四种常见的 POST 提交数据方式

Fiddler原理~知多少?