순방향 오류 제어(FEC, Forward Error Correction)
- 데이터 전송 시 송신 측에서 미리 오류를 감지하고 수정할 수 있도록 오류 정정 코드(ECC, Error Correction Code)를 추가하여 전송하는 방식입니다.
- 수신 측에서는 추가된 오류 정정 코드를 활용하여 오류를 감지하고 자동으로 수정할 수 있습니다.
- 장점: 재전송 없이 오류를 수정할 수 있어 실시간 전송(VoIP, 영상 스트리밍 등) 에 적합합니다.
- 단점: 오류 정정을 위한 추가 데이터(오버헤드)가 발생하며, 복잡한 계산이 필요할 수 있습니다.
- 예제: 해밍 코드(Hamming Code), Reed-Solomon 코드, 터보 코드(Turbo Code), LDPC(Low-Density Parity-Check) 코드 등.
- 순방향 오류 제어 더 알아보기
역방향 오류 제어(BEC, Backward Error Correction)
- 수신 측에서 오류가 감지되면 송신 측에 재전송 요청을 보내는 방식입니다.
- 송신 측에서는 요청을 받으면 해당 데이터를 다시 전송합니다.
- 장점: 오류 검출 후 필요한 데이터만 재전송하므로 효율적입니다.
- 단점: 재전송이 필요하기 때문에 네트워크 부하 증가 및 지연이 발생할 수 있습니다.
- 주로 ARQ(Automatic Repeat reQuest) 기법을 사용하여 구현됩니다.
자동 반복 요청(ARQ, Automatic Repeat reQuest)
ARQ는 역방향 오류 제어 기법의 일종으로, 오류가 검출되었을 때 재전송을 요청하는 방식입니다. 대표적인 ARQ 기법은 다음과 같습니다.
정지-대기 ARQ (Stop-and-Wait ARQ)
- 송신 측에서 하나의 프레임을 전송한 후, 수신 측의 확인 응답(ACK 또는 NAK)을 받을 때까지 기다리는 방식.
- 장점: 구현이 간단하며, 오류가 적은 환경에서 효율적.
- 단점: 하나의 프레임을 전송한 후 응답을 기다려야 하므로 전송 속도가 느려짐.
연속적 ARQ (Continuous ARQ)
- 여러 개의 프레임을 연속적으로 전송하는 방식으로, 슬라이딩 윈도우 기법을 사용합니다.
- 대표적인 방식으로 Go-Back-N ARQ와 Selective Repeat ARQ가 있습니다.
선택적 재전송 ARQ(Selective Repeat ARQ)
- Go-Back-N ARQ의 단점을 보완한 방식으로, 오류가 발생한 프레임만 재전송하는 방식입니다.
- 수신 측에서는 올바른 프레임을 버리지 않고 저장한 후, 필요한 프레임만 요청하여 수신합니다.
- 장점: Go-Back-N에 비해 불필요한 재전송이 적어 전송 효율이 높음.
- 단점: 수신 측에서 버퍼를 추가로 사용해야 하며, 복잡한 구현이 필요함.
비교 요약
오류 제어 방식 | 방식 | 장점 | 단점 |
---|---|---|---|
순방향 오류 제어 (FEC) | 오류 정정 코드 추가 | 실시간 전송 가능, 재전송 불필요 | 오버헤드 발생 |
역방향 오류 제어 (BEC) | 오류 발생 시 재전송 요청 | 필요한 데이터만 재전송 | 지연 증가 가능 |
정지-대기 ARQ | 하나의 프레임을 전송 후 ACK 대기 | 간단한 구현 | 속도가 느림 |
Go-Back-N ARQ | 연속적 전송, 오류 발생 시 이후 프레임 재전송 | 상대적으로 빠름 | 불필요한 재전송 많음 |
선택적 재전송 ARQ (Selective Repeat) | 오류 발생한 프레임만 재전송 | 높은 전송 효율 | 복잡한 구현 |
결론
- 순방향 오류 제어(FEC) 는 재전송이 불가능한 환경(위성 통신, 영상 스트리밍 등)에서 적합합니다.
- 역방향 오류 제어(BEC) 는 네트워크 트래픽을 줄이면서 오류를 수정할 수 있는 방식입니다.
- ARQ 기법(Stop-and-Wait, Go-Back-N, Selective Repeat) 은 데이터 신뢰성이 중요한 환경에서 사용되며, Selective Repeat ARQ 가 가장 효율적인 방식이지만 구현이 복잡합니다.