Automatic Repeat Request (ARQ) is a protocol used by data reliability services provided by network communications to make assurances about data transmission over unreliable networks. ARQ is an error-detecting and control protocol that relies on sender and receiver acknowledgments and timers to re-transmit lost or corrupt data.
ARQ protocols are used by network communications protocols like TCP/IP and other network layer services to guarantee that data is transmitted successfully. In addition to the data segments being transmitted, ARQ necessitates the addition of header fields to carry acknowledgments (ACKs) as well as sender-side timer variables to indicate packet loss.
As a result of lost or corrupt data, indicated by timeouts or negative ACKs (NAKs), ARQ triggers retransmission of data. At the most fundamental level, ARQ is a stop-and-wait protocol where network throughput may be significantly reduced.
Such protocols as Go-Back-N and Selective Repeat have been developed to allow the sending of multiple data segments while waiting on ACKs and, in the case of Selective Repeat, introducing only a minimal amount of redundancy in retransmission.