데이터는 오류에 민감합니다.


은행을 예로 들면 10만 원을 송금했는데 100만 원이 송금되면 큰일 나겠죠.


오류가 1개 났을 뿐인데 말이죠.


반면에 음성신호는 오류에 민감하지 않은 편입니다.


따라서 데이터 전송 시에 오류가 있으면 안 됩니다.


보통 통신에서는 에러를 검출하고 에러가 검출되었다면 재전송을 합니다.



이때 CRC패리티 비트라는 용어가 나옵니다.


먼저 CRC란 Cyclical Redundancy Check의 줄임말로 패킷에 데이터(Payload)와 함께 넣어보냅니다.


패킷에 Payload와 CRC가 들어있는 거죠. Header(데이터 정보)도 패킷에 포함되어 있습니다.



이 패킷을 송신하고 수신을 한 뒤 CRC를 먼저 확인해서 오류 유무를 파악합니다. 


CRC 오류가 검출되었으면 Packet을 재전송합니다.


CRC가 틀리면 Payload도 틀릴 확률이 높기 때문입니다.


CRC는 다항식을 통해서 값을 구합니다.


이 계산식은 복잡한데 위키백과에 친절하게 계산방법이 단계별로 설명되어 있습니다.


https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%A4%91%EB%B3%B5_%EA%B2%80%EC%82%AC


CRC는 다항식의 종류에 따라 CRC-16, CRC-32, CRC-64 등이 존재합니다.




이번엔 패리티 비트를 알아보겠습니다.


패리티 비트는 데이터의 1의 총개수로 오류를 검출합니다.


패리티 비트는 데이터의 1의 총개수를 짝수로 맞춰줍니다.



위의 그림을 예로 들면 첫 번째 데이터의 1의 개수를 3개로 홀수개이므로 패리티 비트를 1로 설정하여 짝수로 설정합니다.


두 번째 데이터의 1의 개수는 2개로 짝수이므로 패리티 비트를 0으로 설정하여 짝수로 유지합니다.


이렇게 만든 데이터를 송신하고 수신하여 받으면 1의 총개수를 확인합니다.


1의 총개수가 홀수면 데이터에 오류나 났다고 판단하고 재전송을 합니다.



CRC와 패리티 비트 차이는 CRC가 연산은 훨씬 복잡하지만 패리티 비트가 잡아내지 못하는 오류를 잡아낼 수 있습니다.


이렇게 CRC와 패리티 비트에 대해서 알아보았습니다~~~ㅎ

+ Recent posts