본문 바로가기
CS/데이터통신 & 네트워크

[데이터통신] 체크섬, 순환 중복 검사(CRC)를 이용한 오류 검출 방식

by jangThang 2023. 5. 14.
반응형

 수신 측에서는 오류가 없는지 확인작업을 하며, 그 방식에는 패리티 비트, 체크섬, CRC 등이 있습니다. 이번 포스팅에서는 덧셈을 이용한 체크섬과 나눗셈을 이용한 CRC 방식에 대해서 알아보겠습니다.

 

[ Contents ]

     

     

    1. 체크섬 (Check Sum)

    각 bit의 합을 끝에 덧붙여, 오류를 검출하는 방식

     

     패리티 비트가 홀수/짝수로 오류를 검출했다면, 체크섬은 합계로 오류를 검출합니다. 맨 끝에 합계를 덧붙여서 수신자가 확인할 수 있도록 해주죠.

     하지만 합계가 너무 클 경우에는 정해진 비트 수를 초과하게 됩니다. 그래서 아래와 같은 방식으로 일정한 크기의 체크섬을 만들어줍니다.

     

     

    1. 각각의 합을 구한다.
    2. 합이 m비트를 보다 크다면 m마다 끊어서 더한다. (보통 m=4)
    3. 1의 보수로 만든다.

     

     예를 들어, 합계가 36 = 100100(2) 이면 4비트씩 끊어서 더합니다.

     10(2) + 0100(2) = 0110(2) = 6

     그 다음에 1의 보수로 만듭니다. 1의 보수는 0과 1을 반전하면 됩니다.

     1001(2) = 9

     

     수신자는 모든 비트를 더한 값과, 체크섬을 더한 값이 1111(2)이 되는지 확인합니다. 정상적으로 전달이 되었다면 0110(2) + 1001(2) = 1111(2)가 됩니다.

     

     

     

    2. 순환 중복 검사(CRC, Cyclic Redundancy Check)

    나눗셈을 이용한 오류 검출 방식

     

     체크섬이 '덧셈'이었다면, CRC는 '나눗셈'을 이용한 오류 검출 방식입니다.

     송수신자는 정해진 숫자(divisor)로 나누며, 나머지가 0이면 정상적으로 수신한 것으로 판단합니다.

     

     예를 들어 보낼 데이터가 1001 이라고 합시다. (데이터 워드)

     이를 1011(divisor)로 나눈 결과는 아래와 같습니다.

     

     CRC에서는 정해진 숫자(divisor)로 나눴을 때, 무조건 나머지가 0이 되어야 합니다.

     따라서 원래 보낼 데이터(1001)에 나머지(110)를 붙여서 1001110(code word)을 보냅니다. 이러면 무조건 1011로 나눴을 때 나머지가 0이 되게 됩니다.

     앞서 과정을 봤을 때, CRC가 체크섬보다 훨씬 어려운 거 같으나 컴퓨터에겐 CRC가 더 쉽습니다. 그래서 성능과 효율도 CRC가 더 좋으며 LAN이나 WAN, WiFi, LTE 등 다양한 곳에서 활용되고 있습니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글