首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SPDY线头阻塞

SPDY线头阻塞
EN

Stack Overflow用户
提问于 2014-08-09 18:55:57
回答 1查看 5.3K关注 0票数 12

我很难理解SPDY是如何解决HOL阻塞的。

引用来源:

要理解为什么会出现这种情况,请记住,每个TCP数据包在连接时都带有一个唯一的序列号,数据必须按顺序传递给接收方(图2-8)。如果其中一个数据包在发送到接收器的过程中丢失,则所有后续数据包必须保存在接收器的TCP缓冲区中,直到丢失的数据包被重新发送并到达接收器为止。因为这项工作是在TCP层内完成的,所以我们的应用程序对TCP重传或排队的数据包缓冲区没有可见性,必须等待完整的序列才能访问数据。相反,当它试图从套接字读取数据时,它只会看到一个传递延迟。这种效应被称为TCP线头(HOL)阻塞.

所以HOL阻塞的存在是因为TCP保证了订单的传递.但是这里,用户igrigorik说,SPDY允许数据包以不同的顺序出现。但是,SPDY不只是HTTP的替代品吗?这意味着它仍然运行在TCP上(从这里)。

EN

回答 1

Stack Overflow用户

发布于 2014-08-09 19:51:28

HOLB有几个原因,其中包重传是其中之一,但与HTTP和SPDY无关。与HTTP和SPDY相关的是,在HTTP1.x中,必须按顺序响应多个请求。

假设一个HTTP客户机通过同一个TCP连接向服务器发送2个请求,而第一个响应在内容长度上是“大”的,而第二个响应在内容长度上是“小”的。

由于HTTP1.x协议的性质,第二个响应必须等待第一个响应完成。第二个响应被第一个响应阻塞。

相反,对于SPDY和HTTP 2这样的多路复用协议,这种类型的HOLB并不存在,因为第二个“小”响应可以在第一个“大”响应之前到达客户端(它们甚至可以被交织)。

你上面提到的问题的图表以图形的方式解释了它。

Ilya在他的回应中,不是指TCP数据包,而是指HTTP“数据包”,当他说它们可能会出现故障时。设想一个由HTTP报头组成的“数据包”,以及一个由将上传到服务器的POST数据组成的“数据包”(或者,在响应中,由要下载到客户端的数据组成的“数据包”)。在HTTP1.x中,这些HTTP“数据包”必须是有序的(首先是请求1的所有HTTP“数据包”,然后是请求2的所有HTTP“数据包”;或者首先是响应1的所有HTTP“数据包”,然后是response2的所有HTTP“数据包”),而在SPDY和HTTP 2中,它们可能是无序的,甚至是交错的。

在SPDY和HTTP 2中缺乏这种HOLB使得这些协议比HTTP1.x更有效。

TCP重传引起的HOLB影响任何基于TCP的协议,包括SPDY和HTTP 2等多路复用协议和HTTP1.x等双工协议。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25221954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档