【问题标题】:Determining the time to receive in object using TCP使用 TCP 确定接收对象的时间
【发布时间】:2014-11-19 21:22:31
【问题描述】:

我想弄清楚的问题是:

在这个问题中,我们考虑 TCP 慢启动引入的延迟 阶段。考虑一个客户端和一个 Web 服务器直接相连 速率 R 的链接。假设客户端想要检索一个对象,其 size 正好等于 15S,其中 S 是最大段大小 (MSS)。将客户端和服务器之间的往返时间表示为 RTT (假定为常数)。忽略协议头,确定 检索对象的时间(包括 TCP 连接建立) 当

  1. 4S/R > S/R + RTT > 2S/R
  2. 8S/R > S/R + RTT > 4S/R
  3. S/R > RTT

我已经有了解决方案(这是教科书上的问题),但我不明白他们是如何得到答案的。

  1. RTT + RTT + S/R + RTT + S/R + RTT + 12S/R = 4 · RTT + 14 · S/R
  2. RTT + RTT +S/R + RTT +S/R + RTT +S/R + RTT + 8S/R = 5 · RTT + 11 ·S/R
  3. RTT + RTT + S/R + RTT + 14S/R = 3 · RTT + 15 · S/R

这是与答案相关的图像:

哪种情况对我有意义:每种情况都是 RTT 时间大于或小于传输一定数量段所需时间的情况。因此,对于第一个,每个 RTT 需要 3S/R 到 S/R 秒。从那里我不明白慢启动是如何运作的。我认为它只会增加每个确认数据包的窗口大小。但是,例如在#1 的解决方案中,似乎只有两个数据包被发送和确认,而窗口大小却跳到 12S?我在这里错过了什么?

【问题讨论】:

    标签: tcp network-protocols flow-control congestion-control


    【解决方案1】:

    是的,答案是正确的,

    慢启动每次MSS数量翻倍,所以从1开始,然后2,然后4,然后8……

    要理解这个数字,可以这样想:每收到一个 MSS,就会发送 2 个 MSS。 在您的示例中:当第一个绿色 mss 得到很好的确认时,发送 2 个蓝色 mss,当第二个 mss 得到很好的确认时,再发送 2 个蓝色 mss。

    当 mss 的数量增加时,您将不会等待 RTT,因为在发送确认时,其他 MSS 正在同时设置。

    【讨论】:

      【解决方案2】:

      这个技巧是为了理解如果 3R/S > RTT > R/S,那么当服务器忙 4 个数据包(蓝色数据包)时,它会在发送完第 4 个数据包之前收到一个 ACK​​。所以剩下的时间将是 1RTT 用于(前一个 ack 和)数据包传输,n * R/S 其中 n 是一个接一个地发送的数据包数。

      现在在我们到达服务器发送 4 个数据包之前,将有 1 个 RTT 进行身份验证,1 个 RTT + R/S 直到客户端发送第 1 个 Ack,1 个 RTT + R/S 直到客户端发送第 2 个Ack,当服务器收到第 2 个 ack(和第 3 个很短的顺序)时,它将一起发送其余的数据包(蓝色和紫色的),因为它不会等待 ACK,因为 RTT

      【讨论】:

        猜你喜欢
        • 2012-01-26
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2016-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多