-
CRC는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.
-
송신측에서는 CRC값을 데이터에 붙인 코드워드를 전송하며, 수신측에서는 수신된 코드워드에서 CRC값을 이용하여 에러를 발견한다.
-
오류 제어를 위한 후진 오류 수정(BEC, Backward Error Correction) 방식 중 오류 검출 방식이다.
-
CRC는 이진법 기반의 하드웨어에서 구현하기 쉽고, 데이터 전송 과정에서 발생하는 오류들을 검출하는 데 탁월하다.
-
하지만 CRC의 구조 때문에 의도적으로 주어진 CRC 값을 갖는 다른 데이터를 만들기가 쉽고, 따라서 데이터 무결성을 검사하는 데는 사용될 수 없다. 이런 용도로는 MD5 등의 함수들이 사용된다.
코드워드 계산 과정
-
주어진 데이터
- 데이터워드: 01101011
- Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
-
계산 과정
-
전송 데이터
- 코드워드 = 01101011 + 00010110
- 전송데이터 = 0110101100010110
에러 검증 과정
-
주어진 데이터
- 수신된 데이터 = 0110101100010110
- Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
-
검증 과정
-
검증 결과
- Divisor 나누기 값이 0이므로 정상 데이터 수신
- 수신된 데이터의 데이터워드(01101011)를 추출하여 목적에 맞게 사용