개요
Stop-and-Wait ARQ(Automatic Repeat reQuest)는 네트워크 통신에서 오류 제어와 흐름 제어를 동시에 수행할 수 있는 가장 기본적인 ARQ 방식입니다. 하나의 프레임을 전송한 뒤, 수신자로부터 응답(ACK)을 받기 전까지 다음 프레임을 전송하지 않음으로써 데이터의 신뢰성과 흐름 조절을 동시에 보장합니다.
1. 개념 및 정의
Stop-and-Wait ARQ는 이름 그대로 한 번에 하나의 데이터 프레임만 전송하고, 수신자의 확인 응답(ACK)을 받은 후에야 다음 데이터를 전송하는 방식입니다. 만약 응답이 없거나 NAK(Negative ACK)가 수신될 경우, 해당 프레임을 재전송합니다.
이 방식은 구현이 간단하면서도 송수신 간 속도 차이로 발생할 수 있는 오류와 오버플로우 문제를 방지합니다.
2. 특징
구분 | 설명 | 비고 |
단순성 | 알고리즘 구조가 매우 직관적 | 임베디드, 저속 네트워크에 적합 |
신뢰성 보장 | 오류가 발생하면 재전송으로 복구 가능 | ACK/NAK 기반 확인 |
낮은 채널 활용도 | 전송과 대기 시간이 반복됨 | 고속 통신에 비효율적 |
Stop-and-Wait ARQ는 속도보다는 신뢰성과 안정성에 중점을 둔 환경에 적합합니다.
3. 구성 요소
구성 요소 | 설명 | 예시 |
송신자(Sender) | 데이터 프레임을 하나씩 전송 | 프레임 0, 프레임 1, ... |
수신자(Receiver) | 수신 확인 응답 전송 | ACK 또는 NAK 반환 |
타이머(Timer) | ACK 수신 지연 시 재전송을 위한 대기 시간 | 일정 시간 초과 시 재전송 |
시퀀스 번호 | 프레임 순서 확인을 위한 번호 지정 | 일반적으로 0과 1 반복 사용 |
ACK가 수신되지 않으면 타이머 만료 후 동일 프레임이 재전송되며, 수신자는 시퀀스 번호로 중복 여부를 확인합니다.
4. 기술 요소
기술 요소 | 설명 | 활용 |
시퀀스 번호 1비트 사용 | 0, 1로 번갈아가며 프레임 식별 | 중복 수신 방지 |
타임아웃 기반 재전송 | 응답 지연 시 동일 프레임 재전송 | 네트워크 지연 보완 |
확인 응답(ACK/NAK) | 수신 여부에 따라 송신자 동작 제어 | NAK 시 즉시 재전송 |
Stop-and-Wait 방식은 오류 복구 및 흐름 제어 모두를 지원하며, 단순한 구조 덕분에 저속/신뢰 기반 통신에서 자주 사용됩니다.
5. 장점 및 이점
장점 | 설명 | 효과 |
간단한 구현 | 로직이 복잡하지 않아 개발 및 유지보수 용이 | 소형 시스템에 적합 |
신뢰성 확보 | 오류 발생 시 재전송 보장 | 데이터 무결성 강화 |
흐름 제어 자동 지원 | 수신자의 수신 상태에 따라 전송 조절 | 버퍼 오버플로 방지 |
Stop-and-Wait ARQ는 소규모 IoT 기기나 실시간 피드백이 중요한 시스템에서 효과적으로 적용될 수 있습니다.
6. 주요 활용 사례 및 고려사항
분야 | 활용 예시 | 고려사항 |
IoT 통신 | 센서 데이터 단위 전송에 적합 | 속도보다 신뢰성 우선 환경 |
위성 통신 | 지연이 크지만 오류 복구가 중요한 경우 | 타임아웃 길이 조정 필요 |
임베디드 시스템 | 마이크로컨트롤러 간 통신 | 메모리/연산 리소스 제한 고려 |
지연에 민감한 고속 네트워크에는 부적합할 수 있으나, 통신 안정성이 중요한 환경에서는 여전히 많이 사용됩니다.
7. 결론
Stop-and-Wait ARQ는 간단하면서도 신뢰성 높은 전송이 가능한 기본적인 ARQ 방식으로, 오류 검출과 흐름 제어를 동시에 해결할 수 있습니다. 비록 속도는 느리지만, 저속 통신 환경이나 신뢰성 우선 상황에서는 여전히 탁월한 선택이 될 수 있습니다. 시스템 목적에 따라 Sliding Window ARQ와 같은 고급 방식과 비교해 선택하는 것이 바람직합니다.
'Topic' 카테고리의 다른 글
Selective Repeat ARQ (0) | 2025.04.19 |
---|---|
Go-Back-N ARQ (0) | 2025.04.19 |
흐름제어(Flow Control) (0) | 2025.04.18 |
LRC(Longitudinal Redundancy Check) (0) | 2025.04.18 |
VRC(Vertical Redundancy Check) (0) | 2025.04.18 |