第三章課后習題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。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM