<communications, protocol> The collection of techniques used in serial communications to stop the sender sending data until the receiver can accept it.
This may be either software flow control or hardware flow control.
The receiver typically has a fixed size buffer
into which received data is written as soon as it is received.
When the amount of buffered data exceeds a "high water mark", the receiver will signal to the transmitter to stop transmitting until the process reading the data has read sufficient data from the buffer that it has reached its "low water mark", at which point the receiver signals to the transmitter to resume transmission.