요약
- 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)를 추출하여 목적에 맞게 사용
참고