ARQ는 Automatic Repeat Request의 약자로, 자동 재전송을 의미한다.
쉽게 말해, 에러가 발생할 경우 재전송을 요구하는 방식이다.
ARQ를 설명하기 앞서, 용어를 먼저 정리해야 합니다.
- 프레임(frame) : 전송층에서 쓰이는 '패킷'과 같은 의미이다.
- ACK(Acknowledge) : 수신측에서 이상 없이 프레임을 받았을 경우에 보내는 확인 응답이다.
- NAK(Negative Acknowledge) : 프레임을 제대로 전송받지 못한 경우 송신측에 보내는 신호
Stop-and-Wait
수신측으로부터 ACK를 받을 때까지 대기하는 방식
[동작 방식]
- 송신측은 프레임을 보내고 기다림과 동시에 타이머를 작동시킨다.
- 수신측에서는 프레임에 이상이 없으면 ACK를 보낸다.
- 프레임에 오류가 있으면 NAK를 보낸다.
- 송신측에서는 ACK를 받으면 타이머를 멈춘다.
- 오류가 발생한 블록만 재 전송하므로 구현 방법이 가장 단순하고, 신뢰성이 있는 통신 방식이다.
- 다만, 한 프레임을 보낼 때마다 기다리므로 속도가 느리다.
Go-back-N
오류가 난 지점부터 전송한 지점까지 모두 재전송 하는 기법
[동작 방식]
- 한번에 여러 프레임을 보내고, 나중에 ACK를 받는 방식
- 에러가 발생한 경우, 해당 프레임부터 모두 재전송한다.
- 대역폭을 많이 차지하는 단점이 있다.
Selective-repeat
[동작 방식]
- 한번에 여러 프레임을 보내고, 나중에 ACK를 받는 방식
- 에러가 발생한 경우, 해당 프레임만 재전송한다.
- 수신자 측은 복잡한 논리 회로와 큰 용량의 버퍼를 요구한다.
연속 재전송을 하는 두 방식의 비교
구분 | Go-back-N | Selective-repeat |
---|
에러 발생시 | 손상된 프레임의 이후부터 모두 재전송 | 손상된 프레임만 재전송 |
구현 난이도 | 구조가 비교적 간단, 구현이 쉬움 | 프레임의 재배열을 구현하기 어려움 |
버퍼 유무 | 데이터를 폐기하기 때문에 큰 버퍼 요구x | 프레임 재배치로 인한 큰 버퍼 요구 |
[참고한 자료들]
그림 출처1
그림 출처2
용어 출처
정의 출처