DATA LINK CONTROL The most important responsibilities of the data link layer are flow control and error control. Collectively ,these functions are known as datalink control.
FLOW CONTROL Flow control coordinates the amount of data that can be sent before receiving acknowledgement and is one of the most important duties of the data link layer. In most cases flow control is a set of procedures that tells the sender how much data it can transmit before it must wait for an acknowledgement from the receiver. The flow of data must not be allowed to overwhelm the receiver.
WHY WE NEED FLOW CONTROL??? Any receiving device has a limited speed at which it can process incoming data and a limited amount of memory in which to store incoming data. The receiving device must be able to inform the sending device before that limit is reached. And to request that the transmitting device send fewer frames or stop temporarily. Incoming data must be checked and processed before they can be used. The rate of such processing is slower than the rate of transmission.
ERROR CONTROL Error control is both error detection and error correction. It allows the receiver to inform the sender of any frames lost or damaged in transmission and coordinates the retransmission of those frames by the sender. In data link layer the term error control refers primarily to methods of error detection and retransmission. Any time an error is detected in an exchange specified frames are retransmitted. This process is called Automatic Repeat Request(ARQ).
FLOW AND ERROR CONTROL MECHANISMS Stop and Wait ARQ Go-Back N-ARQ Selective Repeat ARQ
STOP & WAIT ARQ The sending device keeps a copy of the last frame transmitted until it receives an acknowledgement for that frame. For identification purposes both data frames and acknowledgement (ACK) frames are numbered alternately 0 and 1. This numbering allows for identification of data frames in case duplicate transmission.
STOP & WAIT ARQ CONT… The sender has a control variable which we call S that holds the number of the recently sent frame(0 or 1). The receiver has a control variable which we call R that holds the number of the next frame expected (0 or 1). The receiver sends only positive acknowledgements for frames received safe and sound. It is silent about the frames damaged or lost. The acknowledgement number always defines the number of the next expected frame.
DAMAGED OR LOST FRAME A damaged or lost frame is treated in the same manner by the receiver. If the receiver detects an error in the received frame, It simply discard the frame and sends no acknowledgement. If the receiver receives a frame that is out of order, It knows that the frame is lost.
DAMAGED OR LOST FRAME CONT… It discards the out of order received frame. The sender starts a timer when it sends a frame. If an acknowledgement is not received within an allotted time period, the sender assumes that the frame was lost or damaged and resends it.
LOST ACKNOWLEDGEMENT A lost or damaged acknowledgement is handled in the same way by the sender. If the sender receives a damaged acknowledgement ,it discards it. The waiting sender does not know if frame 1 has been received. When the timer for frame1 expires, the sender retransmits frame 1. The receiver has already received frame 1 and is expecting to receive frame 0(R=0),therefore it will silently discard the second copy of frame 1.
BIDIRECTIONAL TRANSMISSION The stop and wait mechanism we have discussed is unidirectional. However we have bidirectional transmission If the two parties have separate channels for full duplex transmission or share the same channel for half duplex transmission. In this case each party needs both S and R variables to track frames sent and expected.
PIGGYBACKING Piggybacking is a method to combine a data frame with an acknowledgement .