Flow control is a term bandied about on almost all network hardware. From an early age the buzzword factor of 'flow control' had me really curious. They put it on the bulleted feature list of every modem, network switch, and other communication device on the market. But what does it mean?

Well it turns out that flow control just means the attempt by a communications device not to overwhelm the other end with data.

The attempt could be anything! However, in practice flow control is usually analogous with some sort of sliding window scheme. The simplest form of flow control is called rate-based flow control where the hardware has some internal mechanism to regulate its output bandwidth. You may be able to set this rate through some configuration, but the defining factor is that it does not change the rate based on information from its peer. Alternatively feedback-based flow control is where the sender changes its flow parameters depending on the acknowledgements it gets (or doesn't get) back from the other end.

In networking flow control should be done both on the Data Link layer (OSI Layer 2) and at the Transport layer (OSI Layer 4). This duplicity is required so that network nodes don't overwhelm each other along the way, but the end hosts can still regulate the flow in a suitable way for end-to-end communications.