速讀原著-TCP/IP(TCP的堅持定時器)
- 2020 年 3 月 12 日
- 筆記
第22章 TCP的堅持定時器
22.1 引言
我們已經看到 T C P通過讓接收方指明希望從發送方接收的數據位元組數(即窗口大小)來進行流量控制。如果窗口大小為 0會發生什麼情況呢?這將有效地阻止發送方傳送數據,直到窗口變為非0為止。
可以在圖2 0 – 3中看到這種情況。當發送方接收到報文段 9時,它打開被報文段 8關閉的窗口並立即開始發送數據。 T C P必須能夠處理打開此窗口的 A C K(報文段9)丟失的情況。A C K的傳輸並不可靠,也就是說, T C P不對A C K報文段進行確認, T C P只確認那些包含有數據的A C K報文段。
如果一個確認丟失了,則雙方就有可能因為等待對方而使連接終止:接收方等待接收數據(因為它已經向發送方通告了一個非 0的窗口),而發送方在等待允許它繼續發送數據的窗口更新。為防止這種死鎖情況的發生,發送方使用一個堅持定時器 (persist timer)來周期性地向接收方查詢,以便發現窗口是否已增大。這些從發送方發出的報文段稱為窗口探查 ( w i n d o w p r o b e )。在本章中,我們將討論窗口探查和堅持定時器,還將討論與堅持定時器有關的糊塗窗口綜合症。
22.4 小結
在連接的一方需要發送數據但對方已通告窗口大小為0時,就需要設置T C P的堅持定時器。發送方使用與第2 1章類似的重傳間隔時間,不斷地探查已關閉的窗口。這個探查過程將一直持續下去。
當運行一個例子來觀察堅持定時器時,我們還觀察到了 T C P的避免出現糊塗窗口綜合症的現象。這就是使 T C P避免通告小的窗口大小或發送小的報文段。在我們的例子中,可以觀察到發送方和接收方為避免糊塗窗口綜合症所使用的策略。