一道复杂的三次握手和HTTP的RTT计算题

记载于《计算机网络——自顶向下方法》的第二章P10题,可以说是这一章最难的题目了
题干如下:
考虑一条10米短链路,某发送方经过它能够以150bps速率双向传输。假定包含数据的分组是100000比特长,仅包含控制(如ACK或握手)的分组是200比特长。假定N个并行连接每个都获得1/N的链路带宽。现在考虑HTTP协议,并且假定每个下载对象是100Kb长,这些初始下载对象包含10个来自相同发送方的引用对象。在这种情况下,经非持续HTTP的并行实例的并行下载有意义吗?现在考虑持续HTTP。你期待这比非持续的情况有很大增益吗?评价并解释你的答案。

答案:
请注意,每个下载的对象可以完全放入一个数据包中。令Tp表示客户端和服务器之间的单向传播延迟。
首先考虑使用非持久连接的并行下载。并行下载将允许10个连接共享150位/秒的带宽,每个连接只有15个位/秒因此,接收所有对象所需的总时间为:
在这里插入图片描述
现在考虑一个持久的HTTP连接,所需的总时间为:
在这里插入图片描述
解析:
首先我们要明白,一般在计算延时的时候,分组的数据大小是不被计算在内的,这就一定程度上增加了迷惑性。
我们看一下三次握手的过程:
在这里插入图片描述
前两次握手花费的时间是两个控制分组的传输时间+RTT=传输时间+2*Tp
因为客户端在两次握手之后立即向客户端发送第一个对象,所以第三次握手的数据传输时间不被计算在内,这里我们就可以理解我们平常说的往返时延在三次握手里面其实是前面两次握手的时延。
第三次控制对象的传输实际上和数据对象的传输是并行的,不需要重复计算。
之后,因为是非持续的HTTP连接,所以等待第一次连接断开后并行传输后面的引用对象。
有人可能会疑惑:为什么不能一开始就并行传输原对象和引用对象呢?
当然是因为只有原对象传输完才能够确定引用的具体是那些对象了。
之后并行连接引用对象,因为可以完全并行,所以是2个RTT也就是四个Tp+两次控制+数据传输时间。
对于持续http,建立握手之后不需要重复建立,总共只需要三个RTT就够了。
其实理解之后挺简单,只不过自己想的话觉得有些难以理解,所以我单独记录出来希望能帮助大家( ̄▽ ̄)/

  • 36
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值