개요

오늘날 컴퓨터 네트워크에서 널리 사용되는 오류 검출 기술은 순환중복검사 (cyclic redoundancy chekc, CRC) 코드를 사용한다. 각각의 CRC 표준은 CRC 검출 코드의 길이와 같거나 적은 수의 버스트 오류를 검출할 수 있다. 또한 적절하게 추정해 보면, 검출 코드의 비트 보다 큰 길이의 버스트 오류는 1 - 0.5^r 의 확률로 검출 된다. 또한 각각의 CRC 표준은 임의의 홀수개의 비트 오류를 검출할 수 있다.

원리

CRC코드는 다음과 d 비트로 이루어진 데이터 D를 송신 노드가 수신 노드로 전송하고자 한다고 가정하자. 먼저 송신자와 수신자는 G로 표기되는 생성자로 알려진 r+1 비트에 대해서 합의한다. G의 최상위 비트는 1이어야 한다. 주어진 데이터 D에 대해 송신자는 r개의 추가비트 R을 선택하여 D 뒤에 덧붙이며, 이 d + r 비트 패턴은 모듈로-2 연산을 이용하면 G로 정확히 나누어진다. 송신자는 추가비트 R이 약속된 G에 대해서 모듈로-2 연산을 이용하여 정확히 나누어 떨어지도록 R을 잘 정하여 FEC를 정하면 된다.

수신자는 d + r 개의 수신 비트를 G로 나눈다. 만일 나머지가 0이 아니면 오류가 발생한 것으로 그렇지 않으면 데이터가 정확한 것으로 판정할 수 있다.

송신자는 R = D*2^r/G의 나머지를 구하는 과정을 통해 구한다. 설명을 해보자면 2^r은 D를 r비트 만큼 캐리지 이동을 하는 것을 뜻하며, 이에 그것을 G를 통해 나눈 나머지를 더해주면 완벽히 G를 통해 나누어 질 것이다. <쉽게 말하면> (자 어린이 여러분~ 15를 7로 나누게 할려면? 6을 더하면 돼죠!!) 의 원리이다.