본문 바로가기
학교 강의/정보통신공학

Chapter 6. Error Correction

by dustnn 2025. 4. 14.

 

L2에서의 error correction

 

Backward Error Correction(BEC) method

 

: retransmission하면 흐름 끊김 -> bandwidth 취약한 통신에서는 잘 안 함

 

<적합>

- HDLC의 data link protocol

- TCP의 transport protocol

 

<부적합>

- bandwidth 가 취약할 때(특히 L2에서는)

- 장거리 통신(retransmission하는 데 걸리는 시간이 길어)

- VoIP와 같은 실시간 application (급하게 보내야 하기 때문) -> FEC 사용

 

Forward Error Correction(FEC) method

 

: 가서 알아서 고쳐보기

: block으로 나누어서 RX에게 보냄 -> RX가 받은 걸로 고침

ex. VoIP

 

<예시-"Hamming code">

 

TX와 RX는 "어떤 데이터를 어떻게 인코딩할지" 프로토콜 공유(TX는 encoding해서 보내고 RX는 decoding해서 얻음)

-> correction 정보도 넣어 깨져도 복원할 수 있도록 함

-> codeword에 넣는 bit수가 늘어날수록, error날 확률도 높아지지만 고칠 수 있는 확률도 높아짐

redundancy rate↑ → code rate↓ → efficiency↓ 고칠 확률↑

 

ex. 2bit를 보낼 건데 codeword에 5bit 사용 

-> redundancy rate = (5-2)/2 = 3/2

-> code rate = 2/5

-> H(5, 2)

 

"Hamming distance d(v1, v2)" 사용

 

d(011011, 110001) = 3

∵ 011011과 110001을 XOR 연산 -> 1의 개수=3

ex. 00100을 error correction하려고 할 때 codeword의 모든 경우와의 distance 구하기

d(00000, 00100) = 1

d(00111, 00100) = 2

d(11001, 00100) = 4

d(11110, 00100) = 3

=> 가장 가까운 '00000'으로 correction 진행

 

따라서 정리하면,,

ci, cj를 골라 d(ci, cj) 진행 -> 그중 가장 작은 것 고르기 -> min값이 커질수록 error correction 확률 높아짐

codeword를 넓게 해놓으면 -> distance 간격이 커짐 -> 망가져서 왔을 때 decoding이 정확해짐(왜...)