CS/네트워크
ARQ Stop and Wait, Go Back N, SR
D_Helloper
2022. 12. 31. 14:14
ARQ 란 ?
- Automatic Repeat Request
- 통신회선 상에서 신뢰성 있는 데이터 전달을 위해 에러 검출 후 재전송을 통해 오류를 복구하는 에러 제어 방식
- 자동 반복 요청
에러가 발생한 경우, 재전송을 요구하는 방식
Stop and Wait

동작 방식
- 송신측은 프레임을 보내고 기다림과 동시에 타이머를 작동시킴
- 송신측에서는 ACK를 받으면 타이머를 멈춤
- 오류가 발생한 블록만 재전송하므로 구현 방법이 가장 단순하고 신뢰성 있는 통신 방식
- 다만, 한 프레임을 보낼 때 마다 기다리므로 속도가 느림
Go-Back-N
슬라이딩 윈도우 방식
연속적 ARQ(Continuous ARQ)
위에 두 개 다 Go Back n ARQ!
- 흐름제어를 위한, 검출 후 재전송 방식(ARQ)의 일종
- 일정한 윈도우 크기 이내에서 한번에 여러 패킷을 송신
- 이들 패킷에 대하여 한번의 ACK 로써 수신을 확인
- 윈도우 크기를 변형시키며 흐름제어를 하는 기법


단점
- N개의 패킷 중 일부분만 손실되었어도 N개의 패킷 모두를 재전송
- 수신 측에서 재전송이 필요한 경우는 패킷 손상 or 분실 이외에도 NAK 패킷을 받았을 경우, 지정한 타임 아웃 내의 ACK 패킷 손실 등이 있음
- 위 같은 상황에서도 GBN은 N개의 패킷을 재전송 해야 하기에 매우 비효율
TCB가 GBN과 비슷한 점 ?
- Cumulative ACK를 사용, 즉 성공적으로 전송이 되었던 가장 큰 Seq에 대한 ACK를 보냄
Selective Repeat
- 손상되거나 분실되지 않아도 타임아웃 등의 이유로 재전송되는 이후의 모든 프레임을 재전송하는 GBN의 비효율적 문제를 개선한 방식
- 송신 → 수신 연속적으로 프레임을 전송하고 수신측은 에러 발생 시 프레임 정보를 송신측으로 전송
- 송신측은 에러가 발생한 프레임만 수신측으로 재전송

동작 방식
- 한번에 여러 프래임을 보내고 각 패킷들에 대한 ACK를 받음
- 수신 측은 ACK가 순서대로 오든 말든 그냥 받은 패킷에 대한 ACK를 보냄
- 송신측은 ACK를 받지 못한 모든 패킷에 대해 타이머를 계산
- 에러가 발생해 NAK를 받은 경우, 해당 프레임만 재전송
- 따로 받은 패킷을 보관할 버퍼가 필요
- 사용되는 sequence number는 송신 측의 윈도우 사이즈와 수신 측의 윈도우 사이즈 크기의 합보다 크거나 같아야 함