4

网络是我攻读硕士学位的最后一门课程。我确实有一个关于如何通过流水线计算非持久性、持久性和持久性 http 的往返时间的问题。

在花了无数小时阅读有关该问题、从其他 unis 下载笔记甚至搜索 youtube 视频之后,我无法解决这个问题。

为了理解 RTT 是如何计算的,让我们假设一个客户端请求一个包含 10 个图像的 HTML 页面。[让我们保持传播延迟为零。]

请按照我的逻辑

首先,TCP 连接的 3 次握手算作 1 个 RTT。当 TCP 连接关闭时也是如此。

1) 在非 Persistent HTTP 中,我们必须建立 TCP 连接,所以到目前为止它是 1 RTT。由于我们有 10 个对象,我们将有 2*10=20 个 RTT。这导致 1RTT +20 RTT = 21 RTT。[可以计算的另一种方法是,由于每次都会打开新连接,因此对于 10 个对象,它将需要 3 个 RTT,因此需要 30 个 RTT。]

2)在持久HTTP中,我们需要一个1RTT用于连接,1个用于每个对象。这导致 1RTT+10RTT=11 RTT。[我应该添加一个 RTT 来关闭连接从而导致 12 个 RTT 吗?据我了解,它会在一段时间后自行超时。]

3) 在使用流水线的 Persistent HTTP 中,我们需要一个 RTT 来打开 TCP 连接,一个 RTT 来发送 10 个对象,一个 RTT 来关闭连接。这导致 1RTT+1RTT+1RTT=3 RTT。

对此问题的任何帮助将不胜感激!

4

1 回答 1

9

我知道这已经晚了,但我会回答其中的一些问题,以帮助那些可能在某个时候在 Google 上遇到此线程的人。

所以,我们想从一个页面中获取 10 个对象。这是我们的目标。

首先,我们需要做几件事来实现我们的目标。

步骤 1 我们首先需要找到页面的地址。为此,我们访问多个 DNS 服务器,直到找到所需的地址。这是 RTT1 + RTT2 + ... + RTTn。

第 2 步 现在我们有了页面的地址,我们需要向它询问对 10 个对象的引用。由于这是一个非持久 TCP 连接,我们使用 RTT 来初始化连接,并使用 RTT 来请求和检索引用。这是 2RTT 的结果。

第 3 步 最后,我们可以得到所有 10 个对象。由于这是非持久连接,所以每次需要对象时,都需要初始化连接,然后请求和检索对象。我们这样做了 10 次。10(2RTT)

把它们加起来!

Total Time = (2RTT) + 10(2RTT) + (RTT1 + RTT2 + ... + RTTn)
       = 11(2RTT) + (RTT1 + RTT2 + ... + RTTn)
       = 22RTT + (RTT1 + RTT2 + ... + RTTn)

我希望这有助于为您澄清有关非持久 TCP 连接的事情!

于 2017-04-18T22:42:34.603 回答