一般來說,流量控制就是為了讓發送方發送數據的速度不要太快,要讓接收方來得及接收。TCP采用大小可變的滑動窗口進行流量控制,窗口大小的單位是字節。這里說的窗口大小其實就是每次傳輸的數據大小。
當一個連接建立時,連接的每一端分配一個緩沖區來保存輸入的數據,并將緩沖區的大小發送給另一端。
當數據到達時,接收方發送確認,其中包含了自己剩余的緩沖區大小。(剩余的緩沖區空間的大小被稱為窗口,指出窗口大小的通知稱為窗口通告 。接收方在發送的每一確認中都含有一個窗口通告。)
如果接收方應用程序讀數據的速度能夠與數據到達的速度一樣快,接收方將在每一確認中發送一個正的窗口通告。
如果發送方操作的速度快于接收方,接收到的數據最終將充滿接收方的緩沖區,導致接收方通告一個零窗口 。發送方收到一個零窗口通告時,必須停止發送,直到接收方重新通告一個正的窗口。