ARQ 오류 제어 방식과 재전송 메커니즘
ARQ의 ACK·NAK·타임아웃 기반 재전송 원리와 Stop-and-Wait, Go-Back-N, Selective-Reject 방식의 차이를 정리한다.
2026-08-14 · 최초 발행 2025-08-10
오류를 감지한 뒤 다시 보내는 ARQ
ARQ(Auto Repeat Request)는 수신 측이 데이터 오류를 감지했을 때 송신 측에 재전송을 요구하는 오류 제어 기법이다. 물리 계층은 비트를 전송하는 역할을 맡고, 오류 검출과 제어는 데이터링크 계층에서 수행한다. ARQ는 이 과정에서 데이터 무결성을 보장하는 핵심 장치다.
송신 측은 프레임을 보낸 뒤 확인응답(ACK)을 기다린다. 수신 측은 정상 프레임에는 ACK를 돌려주고, 오류가 있으면 부정응답(NAK)을 보내거나 응답하지 않는다. 송신 측은 NAK를 받거나 타임아웃이 발생하면 해당 데이터를 다시 전송한다.
한 프레임씩 확인하는 Stop-and-Wait
Stop-and-Wait ARQ는 가장 단순한 형태다. 송신자는 프레임 하나를 전송한 뒤 ACK가 도착해야 다음 프레임을 보낼 수 있다. NAK 또는 타임아웃이 발생하면 같은 프레임을 재전송한다.
구현과 프레임 보관은 단순하다. 송신 측은 한 프레임만 저장하면 되므로 버퍼 요구량도 작다. 반면 ACK를 기다리는 동안 채널을 활용하지 못하므로, 전송 지연이 긴 환경에서는 효율이 떨어지고 오버헤드 비율도 높아진다.
윈도우로 연속 전송하는 ARQ
Sliding Window ARQ는 여러 프레임을 연속으로 보낼 수 있도록 윈도우 개념을 적용한다. 확인응답을 기다리는 동안에도 윈도우 범위 안에서 다음 프레임을 전송할 수 있어 채널 활용률을 높인다. 재전송 범위에 따라 Go-Back-N과 Selective-Reject로 구분된다.
오류 이후 프레임까지 되돌리는 Go-Back-N
Go-Back-N ARQ에서 송신 측은 윈도우 크기(N)만큼 ACK 없이 연속 전송할 수 있다. 오류가 발생하면 문제가 된 프레임부터 그 뒤에 보낸 프레임까지 다시 전송한다. 수신 측은 오류 프레임 이후에 도착한 프레임을 모두 폐기한다.
연속 전송으로 채널 활용률과 전송 효율은 높아진다. 다만 이미 정상 수신된 후속 프레임까지 재전송해야 하므로 낭비가 생기며, 오류율이 높은 환경에서는 성능이 저하될 수 있다.
필요한 프레임만 다시 보내는 Selective-Reject
Selective-Reject ARQ, 또는 Selective Repeat ARQ는 오류가 발생한 특정 프레임만 골라 재전송한다. 수신 측은 정상 수신한 프레임을 버퍼에 보관하고, 순서가 갖춰지면 상위 계층으로 전달한다. 송신 측은 프레임별 타이머를 유지한다.
재전송량을 최소화해 대역폭 활용도를 높일 수 있으며, 오류율이 높은 환경에서도 효과적이다. 그 대가로 송수신 양쪽에 대용량 버퍼가 필요하고, 프레임별 관리 오버헤드와 구현 복잡성이 커진다.
재전송 범위가 만드는 운영상 차이
| ARQ 방식 | 채널 효율성 | 버퍼 요구량 | 구현 복잡성 | 적합한 환경 |
|---|---|---|---|---|
| Stop-and-Wait | 낮음 | 최소 | 간단 | 짧은 거리, 낮은 오류율 |
| Go-Back-N | 중간 | 중간 | 중간 | 중간 거리, 중간 오류율 |
| Selective-Reject | 높음 | 높음 | 복잡 | 긴 거리, 높은 오류율 |
오류율이 높아질수록 정상 프레임까지 다시 보내는 비용이 커진다. Selective-Reject는 필요한 프레임만 재전송하는 방식으로 이 비용을 줄이지만, 이를 위해 버퍼와 프레임 관리가 추가된다.
TCP와 무선 통신에서의 적용
TCP(Transmission Control Protocol)는 Go-Back-N과 Selective-Reject를 혼합한 방식을 사용한다. 초기 TCP는 Go-Back-N 방식을 사용했으며, 현대 TCP는 Selective Acknowledgment(SACK) 옵션으로 Selective-Reject 기능을 구현한다. 패킷 손실 탐지에는 중복 ACK와 타임아웃 메커니즘이 활용된다.
무선 환경은 유선보다 오류율이 높으므로 ARQ 구현의 효율이 더 중요하다. LTE와 5G 등의 무선 통신에는 Hybrid ARQ(HARQ)가 적용된다. 이는 ARQ와 FEC(Forward Error Correction)를 결합한 방식으로, 오류 정정 코드가 일부 오류를 자체 수정하고 수정할 수 없는 오류에만 재전송을 요청한다.
타이머·시퀀스·버퍼를 함께 설계해야 한다
타임아웃이 지나치게 짧으면 불필요한 재전송이 늘고, 너무 길면 지연 시간이 증가해 성능이 떨어진다. 네트워크 상태에 맞춰 동적으로 조정할 필요가 있다.
시퀀스 번호 공간은 윈도우 크기를 고려해 충분히 확보해야 한다. 송신 버퍼에는 재전송 가능성이 있는 모든 프레임을 저장하고, 수신 버퍼에는 순서가 맞지 않는 프레임을 임시 보관한다. 오류 제어만 따로 볼 수는 없다. 수신자의 처리 능력을 고려해 전송 속도를 조절하는 흐름 제어와 통합해 운영해야 한다.
ARQ 방식의 선택은 네트워크의 거리, 오류율, 지연 특성, 버퍼 여유에 달려 있다. Stop-and-Wait의 단순성, Go-Back-N의 연속 전송, Selective-Reject의 선택적 재전송은 서로 다른 환경에서 각자의 비용과 이점을 가진다.