非持久、持久、带管道的持久 Http 的往返时间

问题描述 投票:0回答:2

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

在花了无数个小时阅读有关这个问题的文章、从其他大学下载笔记、甚至搜索 YouTube 视频后,我无法解决这个问题。

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

请遵循我的逻辑

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

1) 在非持久 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) 在带有管道的持久 HTTP 中,我们需要 1 个 RTT 来打开 TCP 连接,1 个 RTT 来发送 10 个对象,1 个 RTT 来关闭连接。这导致 1RTT+1RTT+1RTT=3 RTT。

任何有关此事的帮助将不胜感激!

http tcp persistent pipelining
2个回答
9
投票

我知道这已经晚了,但我会回答其中的一些问题,以帮助那些可能在谷歌上遇到这个帖子的人。

所以,我们想从一个页面获取 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 连接的问题!


0
投票

计算持久和非持久 HTTP 连接的有效传输速率。鉴于: 一个)。 对象总数:6 b). 对象大小:每个 500 KB c). RTT(往返时间):50 毫秒 比较持久连接和非持久连接的传输时间。

© www.soinside.com 2019 - 2024. All rights reserved.