본문 바로가기

컴/네트워크

전송데이터 비트 오류 검증

Parity Check

  • Parity Bit
    데이터 전송 과정에서 오류가 생겼는지를 검사하기 위해 추가한 비트

오류 검출 부호에서 가장 간단한 형태로 사용되며 홀수 패리티, 짝수 패리티, 수직 패리티 체크방식, 수평 패리티 체크방식이 있다
오류 정정은 불가능

홀수 패리티는 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 것이고 (주로 동기식 전송에 사용)
짝수 패리티는 짝수가 되도록 패리티 비트를 정하는 것 (주로 비동기식 전송에 사용)
(홀수 패리티를 사용할 때 전체 비트의 1의 개수가 짝수라면 오류가 있는 것)

수직 패리티 체크방식은 수직 방향으로 패리티 비트를 부여, 수평 패리티 체크방식은 수평 방향으로 패리티 비트를 부여

CRC (Cyclic Redundancy Check)

네트워크 등을 통해 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식으로, checksum의 일종
Checksum의 일종

  • 과정
        [송신자]
    1. 임의의 CRC 발생코드를 선정
    2. CRC 발생코드의 최고차 차수만큼 원래 데이터의 뒤에 '0'을 붙인다
    3. 확장데이터(= 원래데이터 + 뒤에 붙인 '0')를 modulo-2 연산을 사용해 CRC 발생코드로 나눈다
    4. 나머지가 '0'이면 확장데이터를 그대로 전송하고, 아니면 원래데이터에 나머지를 붙여 전송
      [수신자]
    5. 수신된 코드를 동일한 CRC 발생코드로 나눈다
    6. 나머지가 '0'이면 오류X, 아니면 오류 발생한 것
  • ex
    CRC 발생코드 = 1101, 전송할 데이터 = 110010
    -> CRC 발생코드의 최고차 차수가 3이므로 확장 데이터 '110010000' 생성

                       1 0 0 1 0 0
      1101 |------------------
           | 1 1 0 0 1 0 0 0 0
             1 1 0 1
           -------------------
                   1 1 0 0
                   1 1 0 1
                  ------------
                         1 0 0

    전송코드 = 정보코드 + CRC
              = 110010 + 100 = 110010100 (나머지가 발생했으므로 나머지를 추가한다)

(출처 : https://m.blog.naver.com/PostView.nhn?blogId=seo0511&logNo=10131936944&proxyReferer=https:%2F%2Fwww.google.com%2F)

Hamming Code

수신 측에서 오류가 발생한 비트를 검출한 후 직접 수정하는 방식 -> '자기 정정 부호'
1비트의 오류만 수정이 가능하고, 잉여비트가 많이 필요

참고 : https://m.blog.naver.com/PostView.nhn?blogId=deepb1ue&logNo=221189953315&proxyReferer=https:%2F%2Fwww.google.com%2F
https://dreamlog.tistory.com/578

이 밖에도 궤환 전송 방식(Echo check - 수신측에서 데이터를 송신측으로 되돌려보내 원본데이터와 비교하여 오류가 있으면 재전송),
자동 연속 방식(송신측에서 데이터를 두번 이상 전송하면 수신측에서 두 데이터를 비교해 이상 유무를 판별한 후 오류 발생시 이를 수정),
상승 코드(부호) 방식(순차적 디코딩, 한계값 디코딩을 상ㅇ해 오류 수정, 여러 비트 오류도 수정 가능) 등이 있다