TCP流量控制--滑動視窗
阿新 • • 發佈:2019-01-28
流量控制就是讓傳送方的傳送速率不要太快,要讓接收方來得及接收。
傳送發的傳送視窗不能超過接收方給出的接收視窗的數值。TCP的視窗單位是位元組,不是報文段。
通過下圖可以說明如何利用滑動視窗機制進行流量控制。
注意:
-
當視窗數為 0 時,傳送者不能正常傳送資料段,除非:
-
Urgent資料。比如,使用者想殺掉遠端機器上的程序的時候,可以傳送資料
-
傳送者可以傳送一個位元組的資料段,以便讓接收者再次傳送期待接收的位元組號和視窗數(避免死鎖)
-
-
持續定時器--用來避免死鎖
-
死鎖的產生
-
接收方傳送了一個視窗數為零的確認(視窗更新),告訴傳送方等待。
-
稍後,接收方空出了緩衝,傳送更新視窗的資料段,但是,很不幸,該分組丟失啦!
-
現在,收發雙方都在等待對方傳送資料段過來,但永遠等不到!死鎖產生。
-
-
死鎖解決方案:傳送方在收到win=0時,啟動一個持續定時器,如果定時器超時沒有收到更新視窗,則傳送一個探測資料段,引發對方重新發出更新視窗。
-
-
優化傳輸效率
-
優化傳送端
-
儘量不傳送資料含量小的資料段
-
快取應用層的資料,達到一定量再發送
-
-
優化接收端(糊塗視窗綜合徵)
-
讓接收方等待一段時間
-
或者,等到接收快取已有一半空閒的空間
-
-