ARQ
이번 포스팅에서는 ARQ에 대한 간단한 정리입니다.
통신회선에서 착오가 발생하면 수신측은 착오의 발생을 송신측에 알리고,
송신측은 착오가 발생한 block을 재전송하는 방식으로 검출 후 재전송하는 것
그것을 ARQ(Automatic Repeat Request 자동 반복 요청)라고 합니다.
ARQ 방식 종류
이것은 3가지로 구분할 수 있으며, 아래와 같습니다.
-
Stop-and-Wait ARQ (파이프 라인이 1개)
-
Go-back-N ARQ (파이프 라인이 N개)
-
Selective Repeat ARQ (파이프 라인이 N개)
파이프라인 이란?
ACK를 받기 전에 보낼 수 있는 프레임의 갯수
정지대기방식 (Stop and Wait, Idle ARQ)
송신측이 한개의 BLOCK을 전송한 후, 수신측에서 착오의 발생을 점검한 다음 ACK나 NAK 신호를 보내올 때까지 기다리는 방식
출처 : evan-moon님<
수신측으로부터 ACK을 받을 때까지 대기하다가 전송하는 방법
송신측은 프레임을 보냄과 동시에 타이머를 작동시킨다.
수신측에서 보낸 ACK를 받으면 타이머가 멈춘다.
송신측은 전송한 프레임의 사본을 보관하고 있다가 타이머가 만료되면 해당 프레임을 다시 보낸다.
-> ACK이 오지 않은 경우 프레임이 손실, 중복, 순서 바뀜이 일어난 것으로 판단
Go Back N ARQ
한번에 여러 개를 보낸후 하나의 긍정 확인응답(ACK)을 받고, 후속 데이터 전송.
송신측이 NAK를 받으면 착오가 발생한 BLOCK으로 되돌아가서 그 이후의 모든 BLOCK을 모두 재전송하는 방식
출처 : evan-moon님
NAK(부정 확인응답)를 수신할 때까지 계속하여 데이터를 송신함.
Go Back N 방식을 사용하면 데이터를 연속적으로 보낸 후 한 개의 ACK나 NACK만을 사용하여 수신 측의 처리 상황을 파악할 수 있으므로,
연속적으로 데이터를 보낼 수 있는 흐름 제어 방식인 슬라이딩 윈도우와 아주 잘 들어맞는다고 할 수 있다.
Selective Repeat
손상되거나 분실되지 않아도,
NAK 혹은 타임아웃 등의 이유로 인해 재전송 되는 이후의 모든 프레임을 재전송해야 하는 GBn ARQ의 비효율적 문제점을 개선한 방식
출처 : evan-moon님
NAK를 사용하여 개선할 수 있다.
NAK를 쓰게 되면 Timer가 만료되기전에 해당 프레임을 재전송 해야한다는 것을 알 수 있으므로 빠른 재전송이 가능하다.
수신자 쪽에서의 과정이 복잡하고, 수신 측의 버퍼에 쌓인 데이터가 연속적이지 않다는 단점이 존재