메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Cyclic redoundancy check

noriwiki


개요

오늘날 컴퓨터 네트워크에서 널리 사용되는 오류 검출 기술은 순환중복검사 (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을 더하면 돼죠!!) 의 원리이다.