061 오류를 검출하고 수정하는 알고리즘

백종석·2022년 6월 15일
0
post-thumbnail

오류 검출과 수정


오류를 검출하고 수정까지 할 수 있게 하는, 신중하게 제어된 여분의 정보를 추가하는 과정


체크섬(checksum) 알고리즘


  • 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.
  • 체크섬은 나열된 데이터를 더하여 체크섬 숫자를 얻고, 정해진 비트수의 모듈라로 정해진 비트수로 재구성 한다.
  • 단순 덧셈 방식과 순환 중복 검사의 계산 방식과는 차이가 있으나,
    • 많은 경우 순환 중복 검사의 결과를 체크섬이라고 말하므로 단순 덧셈만을 의미하지는 않는다.
  • 기본적인 메시지 구성 요소(보통 비트)를 추가하여 결과값을 저장함으로써 동작한다.

체크섬의 예

  • 다음과 같이 4 바이트의 데이터가 있다고 치자: 0x25, 0x62, 0x3F, 0x52
  • 1 단계: 모든 바이트를 덧셈하면 0x118이 된다.
  • 2 단계: 캐리 니블을 버림으로써 0x18을 만든다.
  • 3 단계: 0x18의 2의 보수를 얻음으로써 0xE8을 얻는다. - 이것이 체크섬 바이트이다.
  • 체크섬 바이트를 테스트하려면 원래 그룹의 바이트에 체크섬 바이트까지 모두 더하면 0x200이 된다.
  • 다시 캐리 니블을 버림으로써 0x00이 된다. 0x00이라는 뜻은 오류가 없다는 뜻이다. (하지만 오류가 있어도 우연히 0x00이 될 수도 있다.)

페리티 코드


  • 패리티 비트(parity bit)를 사용하여 만드는 코드
  • 패리티 비트는 데이터의 에러 검출을 위해 데이터에 추가되는 여분의 한 비트로서 시스템의 설계 기준에 따라 데이터 시작의 한 비트나 데이터 끝의 한 비트를 사용

패리티 비트

  • 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다.
  • 문자열 내 1비트의 모든 숫자가 짝수 또는 홀수인지를 보증하기 위해 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법
    • 2가지 종류의 패리티 비트(홀수, 짝수)가 있다.
  • 짝수(even) 패리티
    • 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것인데, 이를테면 데이터 비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정한다.
  • 홀수(odd) 패리티
    • 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방법이다.

  • 7비트의 0010110라는 데이터에서 짝수 패리티가 되게 하기 위해서는 1의 패리티 비트를 붙여 10010110로 한다.

    • 같은 데이터에 대해 홀수 패리티 비트가 되게 하려면 0의 패리티 비트를 붙인다.
  • 이렇게 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산함으로써 데이터 오류 발생 여부를 알 수 있다.

  • 패리티 비트는 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다.

profile
항해중인 우당탕탕 코린이

0개의 댓글