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는 송신 측의 윈도우 사이즈와 수신 측의 윈도우 사이즈 크기의 합보다 크거나 같아야 함