1. 糊塗窗口綜合症
糊塗窗口綜合症,這個名字很有意思,原文叫 Silly Window Syndrome,簡稱 SWS.
一看到窗口,我們就應該反應過來這是流量控制中的東西。SWS 是這樣一種情況:接收方通告了一個 1 字節的窗口給發送方,然後發送方發送了 1 字節的數據給接收方。接着,接收方又通告了一個 1 字節的窗口,這樣持續下去,使網絡的效率很低。
2. 解決 SWS
有兩種辦法可以解決此問題:
- 針對接收方來說,先等一段時間,等到接收緩存有足夠的空間了才發出確認。
- 針對發送方來說,發送方不要發送太小的報文,而是把數據積累成一個足夠大的報文段(達到 MSS),或者是積累到接收方通告窗口大小一半的報文段。
如果發送方總是有很多小數據要發送怎麼辦呢?實際上,我們前面學習過 Nagle 算法,它正是用於解決這個問題的。Nagle 算法的目的就是把小數據組合成一個大報文段發送出去的。
如果發送方禁用了 Nagle 算法,就不應該發送小數據,否則很容易引起 SWS 問題。