第三章课后习题P56解析

本题题目的意思是计算在慢启动阶段,传输15个报文段所需要的全部时间,需要知道以下知识点:

  1. TCP连接建立时间,以及三次握手的过程,TCP握手第三次即可发送请求体(这叫做捎带)。
  2. 请求方发送请求后,服务方将对象以报文段的形式发送,每一个报文段要求有ack响应。
  3. 服务方发送速率受制于拥塞窗口大小,且在慢启动阶段接收到一个报文段的ACK回执,就会加一个窗口大小。
  4. 拥塞窗口数据发送是流水线式的,不存在等待一个报文段ACK之后,再发送下一个报文段。因此,如果连续发送一系列的报文段,那么接收到它们的ACK也是连续的,且间隔时间为每个报文段的发送时间(报文段大小 / 发送速率),最终这些ACK报文导致的窗口大小增加也是连续的,且间隔时间为每个报文段的发送时间。

对于问题中的三种情况,实际是对窗口大小增加速度的约束,即在不同的RTT速率下,窗口的不同增长情况对整体传输速度的影响。

一、4S/R>S/R+RTT>2S/R

  看下图,为了方便观察,本来连续发送的报文段中间填充了空隙。在右侧表格的前7个动作中,一切都是按照流水线的方式工作的。但对于SEG5推上链路开始,我们需要考察一下当前的窗口总大小。

  • 首先4S/R>S/R+RTT>2S/R,简化为S/R<RTT<3S/R,下面简称为条件a。
  • SEG5推上链路:将SEG5推上链路的时间点减去SEG4推上链路的时间点,得知此时距离SEG4被发送出去已经过了S/R,根据条件A中的RTT>S/R,此时ACK4是未收到的,因此窗口大小仍然为4,但窗口剩余大小为2。

  • SEG6推上链路:将SEG6推上链路的时间点减去SEG4推上链路的时间点,得知此时距离SEG4被发送出去已经过了2S/R,根据条件A中的3S/R>RTT>S/R,假设在(SEG5推上链路时间点, SEG6推上链路时间点]这个时间区间内ACK4接收到,因此窗口大小为5,窗口剩余大小为3。同理,那么在(SEG6推上链路时间点, SEG7推上链路时间点]这个时间区间内ACK5将被接收到,窗口大小为6,窗口剩余大小为4。由此可推,直到当服务端将SEG15推上链路,发送都呈流水线工作,即不断的发送SEG与接收ACK。在时间点3.5RTT+14S/R时刻,服务端将SEG15推送到链路,经过0.5RTT后,客户端接收到SEG15,客户端侧耗时4RTT+14S/R收到所有报文段。

 

二、S/R+RTT>4S/R

  分析思路依然同一,但是由于S/R+RTT>4S/R的关系,会导致发送完SEG7之后等待一段时间,之后就是类似于一的流水线发送了。所以在4.5RTT+11S/R时刻,服务方发送完所有报文段,再经过0.5RTT,接收方收到所有报文段,因此总共消耗5RTT+11S/R接收。


 

三、S/R>RTT

  分析思路同一。相比于第一种情况,每个SEG的ACK回复得更快,发送SEG2之后,在发送下一个SEG之前,窗口都增长了1,因此永远不会有额外等待ACK时间。发送SEG15时,时间点为2.5RTT+15S/R,经过0.5RTT之后,最后一个报文段到达请求方,因此请求方总共耗费了3RTT+15S/R。

 

 

 

 

 

posted @ 2020-09-13 20:52  re-phoenix  阅读(811)  评论(0编辑  收藏  举报
levels of contents