요약

  • CRC(Cyclic Redundancy Check)는 전송되는 데이터가 전송 중 손상되지 않았는지 확인하는 검증 방식이다.

내용

개요

  • CRC(Cyclic Redundancy Check)는 전송되는 데이터가 전송 중 손상되지 않았는지 확인하는 검증 방식이다.
  • 디지털 데이터를 전송하는 WiFi 및 이더넷과 같은 통신 매체에 흔히 사용된다.

배경

  • CRC 알고리즘은 CRC 알고리즘을 통해 전송되는 각 특정 데이터 세트에 대한 체크섬을 계산하며 다항식 키와 전송된 데이터를 사용한다.
  • 전송을 실행하는 시스템은 확인 또는 검증 코드를 계산하여 이를 전송되는 메시지에 추가한다. 수신받는 측에서도 데이터가 동일한 프로세스를 거친다.
  • 수신 측에서 생성된 CRC가 전송된 CRC와 일치하지 않으면 데이터 손상의 가능성이 있음을 의미한다. 수신 측에서는 데이터 재전송을 요청하거나 데이터를 무시할 수 있다. CRC가 수신된 버전과 일치하면 데이터 손상이 없음을 의미한다.

특징

  • CRC 기법은 수학적 연산 과정은 복잡하지만 높은 오류 검출율과 간단한 H/W 구현이 가능하다.
  • CRC-8/-10/-16/-32 유형이 존재한다.

원리

CRC 기법의 동작 원리

  • CRC는 에러 발견을 위해 전송 Data 뒤에 CRC 검출 정보를 붙여 전송하는 기법

CRC 기법의 동작 상세 설명

  • Encoding(CRC 계산)
    • 데이터워드+n bit로 구성된 데이터를 (n+1)-bit Divisor로 나누어 CRC 정보 생성
    • 데이터 워드+CRC 이루어진 코드워드 생성
    • Divisor는 0, 1 스트링보다 대수다항식 표현
  • Transmission(Data+CRC)
    • 코드워드를 네트워크를 통해 수신측에 전송
    • 손실, 순서 바뀜, 중복 등 에러 발생 가능
  • Decoding(에러코드)
    • 수신된 코드워드를 Divisor 이용하여 나눔
    • 나머지가 0인 경우 데이터 장상 수신
    • 나머지 발생 시 에러 발생으로 간주, ARQ, 자동 재전송 요구

CRC 기법의 상세 사례

CRC 기법의 코드워드 계산 과정

  • 제시사례 분석
    • 데이터워드: 01101011
    • Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
  • 코드워드 계산
  • 전송 데이터
    • 코드워드 = 01101011 + 00010110
    • 전송데이터 = 0110101100010110

CRC 기법의 에러 검증 과정

  • 검증 데이터
    • 수신된 데이터 = 0110101100010110
    • Divisor: 100000111 // CRC-8 = x8 + x2 + x + 1
  • 에러 검증
  • 검증 결과
    • Divisor 나누기 값이 0이므로 정상 데이터 수신
    • 수신된 데이터의 데이터워드(01101011)를 추출하여 목적에 맞게 사용

참고