gpt4 book ai didi

networking - SPDY 线头阻塞

转载 作者:可可西里 更新时间:2023-11-01 02:30:18 26 4
gpt4 key购买 nike

我无法理解 SPDY 如何解决 HOL 阻塞问题。

引自:http://chimera.labs.oreilly.com/books/1230000000545/ch02.html#TCP_HOL

To understand why that is the case, recall that every TCP packet carries a unique sequence number when put on the wire, and the data must be passed to the receiver in-order (Figure 2-8). If one of the packets is lost en route to the receiver, then all subsequent packets must be held in the receiver’s TCP buffer until the lost packet is retransmitted and arrives at the receiver. Because this work is done within the TCP layer, our application has no visibility into the TCP retransmissions or the queued packet buffers, and must wait for the full sequence before it is able to access the data. Instead, it simply sees a delivery delay when it tries to read the data from the socket. This effect is known as TCP head-of-line (HOL) blocking.

所以 HOL 阻塞的存在是因为 TCP 保证了按顺序交付。但是here用户 igrigorik 说 SPDY 允许数据包以不同的顺序出现。但 SPDY 不只是 HTTP 的替代品吗?这意味着它仍然通过 TCP 运行(来自 here )。

最佳答案

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

想象一个 HTTP 客户端通过同一个 TCP 连接向服务器发送 2 个请求,并且第一个响应的内容长度“大”,而第二个响应的内容长度“小”。

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

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

question you referenced above 的示意图以图形方式解释。

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

SPDY 和 HTTP 2 中缺少这种 HOLB 使得这些协议(protocol)比 HTTP 1.x 更高效。

由 TCP 重传引起的 HOLB 会影响任何基于 TCP 的协议(protocol),包括 SPDY 和 HTTP 2 等多路复用协议(protocol),以及 HTTP 1.x 等双工协议(protocol)。

关于networking - SPDY 线头阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com