Flow Control Definition

Flow control is the process of adjusting the flow of data from one device to another or between nodes on a network to ensure that the receiving device or node can handle all of the incoming data.

This is particularly important where the sending device or node is capable of sending data much faster than the receiving device or node can receive it. Too much data arriving before a device or node can handle it causes data overflow, resulting in data loss and possible retransmission.

A variety of flow control mechanisms have been developed. They can be implemented in hardware (i.e., by sending electrical signals), in software (i.e., by sending of data transmission control bytes along with the data stream), or in a combination of both.

Xon-xoff, also written as XON/XOFF, is a software flow control protocol that is commonly used for asynchronous communication between computers. Asynchronous communication is the exchange of messages with the hosts reading and responding as their schedules permit rather than in real time.

In xon-xoff the receiving device sends a an xoff message to the sending device when its buffer is full, telling it to stop transmitting. A buffer is a portion of a computer's memory that is set aside as a temporary holding place for data that is being sent to or received from an external device, such as a disk drive, keyboard, printer or another computer. When the receiving device is ready to accept more data, it sends an xon signal to the transmitting device telling it to start transmitting again.

Flow control for the Internet and other TCP/IP networks is provided by the transport layer, the middle layer in the seven layer OSI (open systems interconnect) model. This is the layer at which TCP (transmission control protocol) operates and which provides full-duplex (i.e., both directions simultaneously) virtual circuits over which packet delivery is reliable, error free, sequenced and duplicate free.

RTS/CTS (request to send /clear to send), also referred to as handshaking, is a hardware flow control technique that is used for modems. In contrast to xon-xoff, which sends control characters in the data stream, RTS/CTS uses positive (transmission allowed) and negative (transmission should be suspended) voltages along dedicated wires in the device cabling. DTR/DSR (data terminal ready/data set ready) is another form of hardware flow control that is used with peripheral devices such as printers.

Created October 24, 2005.
Copyright © 2005 The Linux Information Project. All Rights Reserved.