This is an old revision of the document!
Automatic Repeat reQuest (ARQ) is a method used in telecommunications and networking to achieve reliable data transmission over unreliable or error-prone communication channels. ARQ operates by automatically detecting errors in transmitted data and requesting retransmission of the corrupted packets from the sender.
Here's how the ARQ process typically works:
1. Transmission: The sender (transmitter) sends data packets to the receiver over the communication channel.
2. Acknowledgment (ACK): Upon receiving a packet, the receiver checks it for errors. If the packet is error-free, the receiver sends an acknowledgment (ACK) back to the sender, indicating successful receipt of the packet.
3. Negative Acknowledgment (NACK): If the receiver detects errors in a packet, it sends a negative acknowledgment (NACK) to the sender, indicating that the packet was corrupted and needs to be retransmitted.
4. Retransmission: Upon receiving a NACK or in the absence of an ACK within a specified timeout period, the sender retransmits the corrupted packet.
5. Repeat Process: The process continues until all packets are successfully received and acknowledged by the receiver, or until a maximum number of retransmission attempts is reached.
ARQ can be implemented in different variations, including:
- Stop-and-Wait ARQ: In this simplest form of ARQ, the sender waits for an acknowledgment (ACK or NACK) before sending the next packet.
- Go-Back-N ARQ: The sender can send multiple packets before receiving acknowledgments. If the receiver detects an error in any packet, it discards the corrupted packet and all subsequent packets until the error is resolved.
- Selective Repeat ARQ: Similar to Go-Back-N ARQ, but the receiver selectively acknowledges correctly received packets, allowing the sender to retransmit only the corrupted packets.
ARQ is effective for correcting errors in real-time communication systems such as streaming media, voice calls, and interactive applications like online gaming. However, it introduces additional latency and overhead due to the need for acknowledgment messages and potential retransmissions. The choice between FEC and ARQ often depends on factors such as the characteristics of the communication channel, the required reliability, and the acceptable latency.