2015-10-20 64 views
0

想要驗證以下內容:TCP-接收器窗口中的間隙

假設接收器緩衝器,即滑動窗口大小爲100字節。 進一步假設接收器在流中接收了大約60個字節,爲它們發送了ACK並且現在準備好用於下一個字節,也就是說具有SEQ ID = 1401的那個字節。在這種狀態下,進一步假設:

  • 接收器並沒有提供這些60個字節到應用process--因此他們仍然是在它的窗口
  • 接收器還收到並在其窗口中的1421字節-1440。

因此,還有20個字節的差距尚未收到。在這種狀態下,接收方的緩衝區被填滿了 - 它不能從發送方接收到更多的字節,儘管 有一個20字節的間隔等待着SEQ ID爲1401-1420的字節。

這種情況下是否有缺失?也就是說,只要接收到的字節序列中存在間隙,這個間隙仍然在接收器窗口中佔用緩衝區空間。這有沒有例外?

TIA。

回答

1

在這種情況下是否有缺失?也就是說,只要接收到的字節序列中存在間隙,這個間隙仍然在接收器窗口中佔用緩衝區空間。這有沒有例外?

您無法在接收方的網絡緩衝區中找到空位。如果收到的一個段失序,那麼接收器將丟棄它並重新確認最後收到的序列號。

接收方的假設是網絡丟失了一個或多個IP數據包(序列號太大)或重複數據包(序列號太小),並通過重新校驗發送者將被戳穿的最後一個好段重新傳輸缺失的部分。

+0

或者至多TCP會保留無序的部分,並在填補缺口之前不會確認。 – EJP

+0

是的 - 你可以。 Q是緩衝管理 - 這些差距如何處理。 – ashley