HTTP之队头阻塞

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了HTTP之队头阻塞脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

HTTP1.1

HTTP1.1中引入了长连接,允许多个连接复用一个TCP连接。

当多个请求先后调用HTTP发送的时候,如果前一个请求不响应的话,后一个请求是不会发送的。 所以如果前一个响应阻塞的话,后边的请求也会被迫阻塞,叫做队头阻塞。

为什么要严格控制返回顺序呢F1f;

因为假如不按照FIFO返回响应,就无法区分返回的响应头对应哪个HTTP请求头了。

HTTP2.0

HTTP2.0时,引入了帧、流的概念。

HTTP2是基于TCP的。HTTP2允许多个请求不按照先后顺序发送数据,并允许穿插的发送数据,也就是每次发送一个帧。

那么怎么区分帧属于哪个HTTP请求呢?

会对每个HTTP请求进行编号,然后再帧中插入对应的HTTP编号和其在HTTP请求中的位置序号,然后发送到服务器,服务器根据HTTP编号和位置序号来将帧重组,然后同时乱序的发送应答,客户端也通过HTTP编号和位置序号来重组帧。

这样就避免了HTTP层面的队头阻塞。

但是仍无法解决TCP的队头阻塞。

TCP由于引入了滑动窗口,并且每次可以发送多个数据,并且可以乱序接受。当序号大的数据先到达后,仍然不能被应用程序读取,需要等到序号靠前的数据到了之后,才能被应用程序读取,这也出现了队头阻塞。

这个队头阻塞是TCP实现可靠传输的副作用,无法解决。

脚本宝典总结

以上是脚本宝典为你收集整理的HTTP之队头阻塞全部内容,希望文章能够帮你解决HTTP之队头阻塞所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。