往返时间:非持久化、持久化、带流水线的持久化 Http。

5

网络技术是我硕士学位的最后一门课。我有一个关于如何计算非持久化、持久化和具有管线化的 HTTP 的往返时间(Round Trip Time,RTT)的问题。

在花费了无数个小时阅读相关资料、下载其他大学的笔记甚至搜索 YouTube 视频之后,我仍未能解决这个问题。

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

请按照我的逻辑进行操作:

首先,TCP 连接执行的三次握手计为 1 次 RTT。当 TCP 连接关闭时也是如此。

1)在非持久化 HTTP 中,我们必须建立 TCP 连接,从而造成了 1 个 RTT 的开销。由于我们有 10 个对象,因此我们将有 2*10=20 个 RTT 开销。这样就得到了 1 个 RTT + 20 个 RTT = 21 个 RTT。[ 另一种计算方法是说,由于每次都会打开新的连接,对于 10 个对象,需要 3 个 RTT,因此需要 30 个 RTT。]

2)在持久化 HTTP 中,我们需要 1 个 RTT 来建立连接,以及每个对象都需要 1 个 RTT。这就导致了 1 个 RTT + 10 个 RTT = 11 个 RTT。[ 我应该再添加一个关闭连接的 RTT,因此会增加到 12 个 RTT 吗?在我看来,它将在一段时间后自动超时。]

3)在具有管线化的持久化 HTTP 中,我们需要 1 个 RTT 来打开 TCP 连接,1 个 RTT 来发送 10 个对象,以及 1 个 RTT 来关闭连接。这样就得到了 1 个 RTT + 1 个 RTT + 1 个 RTT = 3 个 RTT。

对此事项的任何帮助都将不胜感激!


这是一份PDF文件,非常详细地解释了从这里学习的内容。 - Shaurya Uppal
1个回答

9
我知道有点晚,但我会回答一些问题,以帮助那些可能在谷歌上遇到这个问题的人。
我们想要从页面中获取10个对象。这是我们的目标。
为了达成我们的目标,我们需要做几件事情。 步骤1 首先,我们需要找到页面的地址。我们通过访问多个DNS服务器来找到所需的地址。这需要RTT1 + RTT2 + ... + RTTn的时间。 步骤2 现在我们有了页面的地址,我们需要请求它提供10个对象的引用。由于这是非持久的TCP连接,我们需要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连接的相关内容!

1
关闭TCP连接怎么样? - gigili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接