TCP Flow Control

Problem

A powerful server can send data much faster than a small client can process it. Eventually the client's receive buffer fills. How does the sender know when to slow down?

Solution — TCP Flow Control

The receiver tells the sender how much buffer space it has available: its receive window (rwnd). It advertises this capacity in the TCP header's Window field, sent with acknowledgments (ACKs). A zero window pauses ordinary data transmission; as the application reads data and frees space, the receiver advertises an updated window. Receiver: "I can accept another 32 KB." The sender limits outstanding data accordingly.
Core idea: flow control prevents a sender from overwhelming the receiver.