Flow control is a set of procedures that tell the sender how much data it can transmit before it must wait for an acknowledgment from the receiver. The receiving device must be able to inform the sending device before those limits are reached and request the transmitting device to send fewer frames or stop temporarily.
> Incoming data must be checked and processed before they can be used. The rate of such processing is often slower than the rate of transmission. For this reason, each receiving device has a block or memory, called a buffer, reserved for storing incoming data until they are processed.
One of the problems that comes in the data link layer is what to do with a sender that systematically wants to transmit frames faster than the receiver can accept them. This situation occurs when the sender is running on a fast computer ant the receiver is running on a slow machine. Even if the transmission is error free, at a certain poin of time, the receiver will simply not be able to handle the frames as they arrive. It will start loosing some. The solution to this problem is to introduce flow control. In this technique, called throttling, some kind of feedback mechanism is used, so that the sender can be made aware of whether or not the receiver is able to keep up with the flow of data. The scheme may have the basic principle, which is the well defined rule about when a sender may transmit the next frame. Such a rule often prohibits frames from being sent until the receiver has granted permission.
> Flow control is also the mechanisn by which a modem controls the rate at which it receives data from another modem.
You can also use to flow control to describe data rate control mechanisms between other devices, such as computers and attached printers, or between CSU/DSUs (Channel Service Unit/Data Service Units) and routers.
Two basic types of flow control :
Hardware flow control : Also known as RTS/CTS (Request To Send/Clear To Send) control.
Software flow control : Also known as XON/XOFF control.
HARDWARE FLOW CONTROL
This method uses special dedicated pinning on cables to leave flow control to the modem itself. In other words, a separate hard-wired signal link (wire) that does not carry data is used to enable one modem to send stop and start messages to the other modem by raising or lowering voltage levels on this wire. Hardware flow control is used with high-speed modems that can compress data and is usually the default setting for Microsoft Windows based software, such as Hyperterminal, that uses modems.
SOFTWARE FLOW CONTROL
This method uses special data characters (usually Ctrl+S to stop transmission, and Ctrl+Q to resume) sent within the data stream itself. This would enable a local modem to signal a remote modem to stop transmitting data so that the local modem can catch up. Software flow control is slower and less reliable than hardware flow control because a user, program, or line noise might inadvertently generate a stop signal for the remote modem. In addition, software flow control is used only when transmitting ASCII text information, not when transmitting binary data files, because the binary data might contain the Ctrl+S stop character and cause the remote modem to stop transmitting data.