Flow control is a technique for assuring that a transmitting entity does not overwhelm a receiving entity with data. A receiving entity typically allocates a data buffer of some maximum length for a transfer. When data is received, the receiver must do some amount of processing before passing the data to the higher level software. In the absense of flow control, the receiver’s buffer may fill up, and overflow while it is processing old data. Basically there are two types of flow control mechanisms.
Stop-and-Wait Flow Control
The simplest form of flow control is stop-and-wait and works as follows. A source entity transmits a frame. After reception, the destination entity indicates its willingness to accept another frame by sending back an acknowledgement to the frame just received. The source must wait until it receives the acknowledgement before sending the next frame. The destination can thus stop flow of data by just withholding the acknowledgement. This method fails if the message transmitted is very large.Care must be taken to split the large frames into smaller ones of size lesser than maximum buffer size. Smaller blocks also provide the following advantages -
Sliding window flow control is a point to point protocol assuming that no other entity tries to communicate until the current data transfer is complete.The window maintained by the sender indicates which frames he can send. The sender sends all the frames in the window and waits for an acknowledgement. The sender on receiving an acknowledgement indicating the next frame expected , shifts the window to the corresponding sequence number, thus indicating that frames within the window starting from the current sequence number can be sent.
Flow control also includes the control of data transfer
between the PC and the Radio. While the PC is transferring data to the
modem and if the modem detects a reception, the PC-Radio communication
must be paused, giving higher priority to the incoming signal.