본문 바로가기

네트워크

CRC 오류체크 비트

CRC(Cyclic redundancy check)이란?

"순환 덧붙임 검사"

 

Disk에 file을 저장하고 읽을 때, Data 통신에서 file을 전송할 때 사용하며 전송중 정보(데이터)에 오류(error)가 발생하였는 지 확인하기 위해 데이터에 덧붙여 보내는 code 입니다.

 

CRC 처리과정 :

송신부

1. 임의의 CRC 발생코드를 선정

2. CRC 발생코드의 최고차 차수만큼 원래 데이터의 뒤에 '0'을 붙인다.

3. 확장데이터(= 원래 데이터 + 데이터 뒤에 붙인 '0')를 modulo-2 연산을 사용하여 CRC 발생코드로 나눈다.

4. 나머지가 '0'이면 확장데이터를 그대로 전송한다.

5. 나머지가 '0'이 아니면 원래데이터에 나머지를 붙여 전송한다.

 
 

수신부

6. 수신장치(Receiver)는 수신된 코드를 동일한 CRC 발생코드로 나눈다.

7. 나머지가 '0' 이면 오류가 발생하지 않은 것이고 나머지가 '0' 이 아니면 전송과정에서 오류가 발생한 것이다.

 
 

CRC 처리과정에서 modulo-2 연산이 사용되는데...

modulo-2 연산은 Exclusive-OR(EX-OR) 연산과 동일합니다. (두 숫자가 다르면 1, 같으면 0)

 
 

예를 하나 들어 보겠습니다.

CRC 발생코드 P(x)를 아래와 같이 설정하겠습니다.

 
 
 

CRC 발생코드가 '1101' 처럼 주어지기도 하고 좌측처럼 다항식으로 주어지기도 합니다.

다항식으로 주어지면 위의 예처럼 2진 코드로 변환을 해야합니다.

 

전송할 정보(데이터) G(x)가 '110010' 이라고 하면

CRC 발생코드의 최고차 차수가 '3'이므로 G(x) 뒤에 '0'을 3개 붙여서 확장 데이터 '110010000'을 만듭니다.

 

이제 확장 데이터를 CRC 발생코드 '1101'로 나누는데 이때 앞에서 말한 modulo-2 연산을 이용합니다.

 
 

나머지가 발생했군요.... 나머지의 비트수는 CRC 발생코드의 최고차 차수와 같습니다.

정보(데이터) '110010'에 CRC '100'을 붙인 '110010100'이 전송되는 전송코드입니다.

 

이제 수신측에서 전송 데이터에 오류(error)가 있는 지 알아봅시다.

수신된 코드를 동일한 CRC 발생코드로 나눕니다.

 
 

나머지가 '0' 이군요.

오류(Error)가 없습니다.

 
 
 
 
 

출처 :

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=seo0511&logNo=10131936944

 

'네트워크' 카테고리의 다른 글

[강의 정리] 원하는 사이트 연결까지 전체 흐름 정리  (0) 2022.07.17
IPv4, IPv6 파헤치기  (0) 2022.07.17
CIDR란?  (0) 2022.07.17
서브넷(Subnet)이란?  (0) 2022.07.17
[강의정리] Data plane, Control plane  (0) 2022.07.17