Skip to content
  • CRC는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.

  • 송신측에서는 CRC값을 데이터에 붙인 코드워드를 전송하며, 수신측에서는 수신된 코드워드에서 CRC값을 이용하여 에러를 발견한다.

  • 오류 제어를 위한 후진 오류 수정(BEC, Backward Error Correction) 방식 중 오류 검출 방식이다.

  • CRC는 이진법 기반의 하드웨어에서 구현하기 쉽고, 데이터 전송 과정에서 발생하는 오류들을 검출하는 데 탁월하다.

  • 하지만 CRC의 구조 때문에 의도적으로 주어진 CRC 값을 갖는 다른 데이터를 만들기가 쉽고, 따라서 데이터 무결성을 검사하는 데는 사용될 수 없다. 이런 용도로는 MD5 등의 함수들이 사용된다.

코드워드 계산 과정

  • 주어진 데이터

    • 데이터워드: 01101011
    • Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
  • 계산 과정

    image
  • 전송 데이터

    • 코드워드 = 01101011 + 00010110
    • 전송데이터 = 0110101100010110

에러 검증 과정

  • 주어진 데이터

    • 수신된 데이터 = 0110101100010110
    • Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
  • 검증 과정

    image
  • 검증 결과

    • Divisor 나누기 값이 0이므로 정상 데이터 수신
    • 수신된 데이터의 데이터워드(01101011)를 추출하여 목적에 맞게 사용