ARQ(Automatic Repeat Request)
자동 재전송 요청을 의미하며, 데이터 통신에서 오류가 발생했을 때 데이터의 신뢰성을 보장하기 위한 메커니즘
송신된 데이터에서 오류가 감지되거나, 송신자가 ACK를 받지 못했을 때 자동으로 재전송을 요청하는 방식이다.
이를 통해 네트워크 상에서 데이터 무결성을 보장하고, 오류가 있는 데이터를 수신자에게 올바르게 전달할 수 있게 해준다.
용어 정리
- ACK(Acknowledge) : 수신 측에서 이상 없이 프레임을 받았을 경우에 보내는 확인 응답
- NAK(Negative Acknowledge) : 프레임을 제대로 전송받지 못한 경우 송신 측에서 보내는 신호
ARQ의 종류
Stop-and-Wait ARQ 방식
수신 측으로부터 ACK를 받을 때까지 대기하는 방식
- 한 번에 하나의 데이터 패킷만을 전송하고, 송신자는 수신자의 ACK를 받을 때까지 대기한다.
- 만약, ACK가 도착하지 않으면 일정 시간 후 데이터를 재전송한다.
- 데이터 프레임의 정확한 수신 여부를 매번 확인하면서 다음 프레임을 전송해나가는 가장 간단한 오류 제어 방식이다.
- 구현이 간단하고 송신 측에서 최대 프레임 크기의 버퍼가 1개만 있어도 된다.
- 응답이 올 때까지 대기해야 하므로 네트워크 지연 시간이 길어질 수 있다.
- 응답을 기다리는 동안 대역폭이 사용되지 않는다는 점에서 효율이 떨어진다.
동작 원리
- 송신자는 하나의 패킷을 전송한다.
- 수신자는 패킷을 받고 오류 검증을 한다.
- 오류가 없으면 수신자는 ACK를 보내고, 송신자는 다음 패킷을 전송한다.
- 오류가 있거나 ACK가 수신되지 않으면, 일정 시간이 지나 송신자가 해당 패킷을 재전송한다.
Go-back-N ARQ 방식
오류가 난 지점부터 전송한 지점까지 모두 재전송하는 방식
- Stop-and-Wait ARQ를 개선한 방식이다.
- 송신자는 여러 개의 패킷을 연속적으로 전송할 수 있으며, 수신자가 NAK 또는 오류가 발생한 특정 패킷 이후의 데이터를 모두 재전송하는 방식이다.
- 이 방식에서는 송신자는 수신자에게 ACK를 받을 때까지 연속된 패킷을 전송할 수 있지만, 오류가 발생하면 해당 오류 이후의 모든 패킷을 다시 전송해야 한다.
- 하나의 패킷에서 오류가 발생하면, 그 이후의 모든 패킷을 다시 전송해야하므로 비효율적일 수 있다.
동작 원리
- 송신자는 N개의 패킷을 연속적으로 전송할 수 있다.
- 수신자는 각 패킷에 대해 오류를 검사하고, 오류 없는 패킷에 대해 ACK를 보낸다.
- 만약 특정 패킷에서 오류가 발생하면, 수신자는 해당 패킷을 수신하지 못했다고 NAK를 보낸다.
- 송신자는 오류가 발생한 패킷 이후의 모든 패킷을 다시 전송한다.
Selective Repeat ARQ 방식
연속적으로 데이터 프레임을 전송하고 에러가 발생한 데이터 프레임만 재전송하는 방식
- Go-back-N ARQ의 단점을 해결한 방식이다.
- 수신자는 각 패킷을 순서에 상관없이 개별적으로 ACK 응답을 보내고, 송신자는 오류가 있는 패킷만 선택적으로 재전송한다.
- 이 방식은 데이터 전송 중 발생할 수 있는 비효율적인 재전송을 최소화하는 것이 목표이다.
- 각 패킷에 대해 개별적으로 ACK를 처리해야 하므로, 복잡한 구현이 필요하다.
동작 원리
- 송신자는 N개의 패킷을 연속적으로 전송한다.
- 수신자는 각 패킷에 대해 개별적으로 ACK를 보낸다.
- 만약 특정 패킷에서 오류가 발생하면, 그 패킷만 재전송을 요청한다.
- 송신자는 수신자에게 NAK 또는 ACK 미수신된 특정 패킷만 재전송한다.
연속 재전송을 하는 두 방식의 비교
구분 | Go-back-N ARQ | Selective Repeat ARQ |
에러 발생 시 | 손상된 프레임의 이후부터 모두 재전송 | 손상된 프레임만 재전송 |
구현 난이도 | 구조가 비교적 간단하며 구현이 쉬움 | 프레임의 재배열을 구현하기 어려움 |
버퍼 유무 | 데이터를 폐기하기 때문에 큰 버퍼 요구 X | 프레임 재배치로 인한 큰 버퍼 요구 |
참고 자료
'certification > 정보처리산업기사' 카테고리의 다른 글
[DB] 트랜잭션의 4가지 특성(ACID) (1) | 2024.10.20 |
---|---|
[Network] 네트워크 프로토콜의 기본 요소, 특징, 예시 (1) | 2024.10.20 |
[SW] V-모델과 테스트 레벨 (0) | 2024.10.19 |
[SW] 테스트 시각에 따른 분류(검증, 확인) (0) | 2024.10.19 |
[SW] 테스트 기법에 따른 분류(화이트박스 테스트, 블랙박스 테스트) (0) | 2024.10.19 |