When data is sent to the receiver, flow control should be carried out so that the flow of data does not overwhelm the receiver. Any receiving device has a limited speed at which it can process the incoming data and a limited amount of memory to store the incoming data. The receiving device should be able to inform the sending device before these limits are reached so that the transmission is stopped or reduced, temporarily.
The incoming data needs to be checked and processed before it can be used. The rate of processing is always slower than the rate of transmission. So each receiving device has a block of memory called buffer which is reserved for storing the incoming data until it is processed. If the buffer begins to fill up, the receiver should be able to tell the sender to stop the transmission until it is once again able to receive.