What is flow Control? What is RTS/CTS? What is Xon/Xoff?
Flow control, refers to the control of the data flow between devices connected in serial mode (directly or through modems).
When data are received they become part of a process, for example they are represented on a screen (this task does not require intensive processor use) another example would be the interpretation, checking syntax, and subsequent compilation to create a configuration file (this task requires quite processor use) when the processor is busy could happen that it does not reach to read the buffered data before they are over written.
To avoid these, two mechanisms were developed, RTS/CTS by hardware and Xon/Xoff by software:
RTS/CTS when a device require send data to another, asks permission to do it by raising a signal (a pin on the serial connector, this pin is protocol defined as RTS) Request To Send and can not transmit as long as the other device answer with a signal in the pin CTS Clear To Send (ready for transmission) i.e. the device that receives can use this mechanism to handle the amount of data that receive, based on their ability to process them.
Xon/Xoff this is one alternative to handle the arrival of data, in this case is the receiver that sends the command Xoff to the transmitter, with this order tells him to stop transmission, when the receiver finishes processing all the data buffer, sends a Xon (this is the signal that awaits the transmitter to resume sending data).