Automatic Repeat Request (ARQ)
This is an error-control method for data transmission that uses acknowledgements (messages sent by the receiver indicating that it has correctly received a data frame or packet) and timeouts (specified periods of time allowed to elapse before an acknowledgment is to be received) to achieve reliable data transmission over an unreliable service. If the sender does not receive an acknowledgment before the timeout, it usually re-transmits the frame/packet until the sender receives an acknowledgment or exceeds a predefined number of re-transmissions.
Commonly there are three types of ARQ:
This is simple but often leaves the channel unutilized. System throughput is therefore low and rarely reaches channel capacity.
This is better than stop-and-wait method but often wastes bandwidth by retransmitting packets that need not be retransmitted.
Selective Repeat ARQ
This retransmits only lost packets while maximizing channel utilization. Thus, it is the best of the three methods. Implementation is often complex.