ARQ (Automatic Repeat Request)란?

신뢰성있는 데이터 전송을 보장하기 위한 매커니즘으로, 재전송 기반 error-control 방식이다.

종류는 크게 Stop-and-Wait, Selective Repeat, Go-Back-N, Adaptive ARQ 총 4가지가 있다.

 

 

Stop-and-Wait ARQ

Segment 를 전송한 후, 그에 대한 확인 응답 ACK 가 올 때 까지 대기하는 방식이다.

 

1) Flow-Control

확인 응답이 올 때 까지 대기한다.

 

2) Error-Control  

Segment 오류가 발생하면 폐기처리하여 수신 측에서 ACK 를 보내지 않는다. 주어진 시간 안에 ACK 가 도착하지 않으면 Time-out 되어 Segment 를 재전송 한다.

 

Packet 1 이 유실되어 그에 대한 ACK 가 시간 내에 도착하지 않아, TIME-OUT 되어 Packet 1 이 재전송되었다.

Packet 0 에 대한 ACK 가 유실되어 시간 내에 도착하지 않아, TIME-OUT 되어 Packet 1 이 재전송되었다.

 

 

Go-Back-N ARQ

Sliding Window 기반으로 동작하는 재전송 프로토콜로, 누적 응답이 가능하다.

 

 

1. 누적 응답

Packet 1 에 대한 ACK 2 가 유실되어도, Packet 1 의 복사본을 임시저장한 후에 다음 패킷을 전송한다.

다음 Packet 2 에 대한 ACK 3 를 통해 이전 패킷에 대한 ACK 를 포함한 누적 응답이 가능하다.

 

2. 순차 전송

Sender Window 의 순서대로 Packet 이 전송되며, 순차적이지 않은 패킷은 무시된다.

Packet 1 이 유실된 채로 Packet 2, 3 이 전송되면 수신 측은 무시한 채로, Packet 1 을 요구하는 ACK 1 을 전송한다. 송신 측은 이전에 ACK 1 을 이미 수신하였으므로, 재전송된 ACK 1 은 무시되며 Time-out 시에 Packet 1 을 재전송한다.

 

 

Selective Repeat ARQ

오류가 발생한 Segment 나 그 이후의 모든 Segment 를 재전송하는 방식이다.

순차적인 Packet 전송이 이루어지지 않아도 상관 없으며, 유실되어 수신하지 못한 Packet 만 재전송을 요청한다.

단, Sliding 은 순차적으로 수행되므로 이전 Packet 에 대한 ACK 가 도착해야 Sliding 을 수행한다.

 

Packet 1 이 유실되면 재전송이 되기전까지 Sender Window Sliding 대기 상태가 된다.

Packet 의 전송 및 수신 시점은 중요하지 않으므로, 다음 Packet 은 계속 전송 및 수신된다.

단, Slding 은 순차적으로 이루어져야 하므로 Receiver Window Sliding 은 대기 상태에 머무른다.

Time-out 이 되어 Packet 1 재전송되고 그에 대한 ACK 를 수신하면, 그 때 양측에서 Sliding 이 수행된다.

 

 

Adaptive ARQ

전송 효율을 높이기 위해 데이터 블록의 크기를 동적으로 변경하여 전송하는 방식이다.

 

 

 

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.

혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)

 

COMMENT