Introduction
Imagine sending a long letter through a small mailbox. If you send too many pages at once, the mailbox overflows and pages get lost. TCP flow control solves this problem by managing how much data is sent before waiting for confirmation.
Imagine a conveyor belt delivering boxes to a worker. The worker can only handle a few boxes at a time. The belt stops when the worker is full and starts again when space is freed. This keeps the worker from being overwhelmed.
Sender Side Window: ┌─────────────────────────────┐ │[Data 1][Data 2][Data 3][Data 4][Data 5]│ └─────────────────────────────┘ ↓ Receiver acknowledges Data 1 and Data 2 Window slides forward: ┌─────────────────────────────┐ │ [Data 3][Data 4][Data 5][Data 6][Data 7]│ └─────────────────────────────┘