본문 바로가기
CS/Network

2-3. 데이터 통신 : 패리티검사(Parity Check)와 검사합(Checksum)

by pizzz 2022. 12. 8.

오류 검출과 교정 기법

 

단순 패리티 검사(Parity Check)

- 패리티 비트를 프레임의 각 문자 끝에 추가

  • 짝수 패리티(Even Parity) : 패리티 비트 값이 자신을 포함하여 1의 개수가 짝수
  • 홀수 패리티(Odd Parity) : 패리티 비트  값이 자신을 포함하여 1의 개수가 홀수

- 예 : 송신측이 ASCII 코드 q (1110001)를 홀수 패리티를 사용하여 전송한다면, 11100011을 전송

           -> 짝수 패리티 사용하여 전송한다면 11100010

- 한계점 : 두 개 혹은 임의의 짝수 개의 비트가 바뀌면 오류를 검출해 내지 못함

 

* ASCII코드(american standard code for information interchange, 미국 정보 교환 표준 부호)
- 미국 ansi에서 표준화한 정보교환용 7비트 부호체계로 8비트 컴퓨터에서도 활용되어 오늘날 문자 인코딩의 근간을 이루게 됨
- 000(0x00)~127(0x7F)까지 128개 부호 사용
- 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는 나머지 1비트를 통신 에러 검출을 위한 용도로 비워두었기 때문

     ex) 1011001 + parity bit (0)

 

 

- 패리티 검사과정

 

예제) 패킷의 데이터가 1010101101와 같은 비트 패턴을 가지며 짝수패리티를 사용한다고 가정했을 때 송신측에서 추가되는 패리티 비트 값을 구하시오.

 

풀이) 1의 갯수가 짝수가 되게 해야함 -> 1의 갯수 = 6

 

답) 패리티 비트 값 = 0  

 

 

2차원(Two-Dimensional) 패리티 검사

- 단순 패리티 검사는 오류를 검출하는데 한계

- 2차원 패리티 검사는 문자의 비트를 2차원 배열형태로 구성하여 각 행(Row)과 열(Column)마다 패리티 비트를 계산

- 2차원 패리티 검사는 3비트의 오류까지 검출할 수 있음

- 한계점 : 행과 열 방향에서 모두 짝수 개의 오류가 발생하면 오류를 검출 불가

 

 

체크섬(Checksum) = 검사합

- 송신측

  • 데이터를 m비트의 세그먼트들로 분리 
  • 이들 m비트의 세그먼트들을 모두 더하고 난 후 1의 보수(Complement)를 수행한 값이 첵섬 
  •                                                                        * 1의 보수 : 0 -> 1 , 1 -> 0
  • 더하기를 하는 과정에서 가장 왼쪽 비트(MSB, Most Significant Bit)에서 캐리(Carry)가 생기면 구해진 합에 더 함
  •                                                    * 캐리 = 최상위비트(MSB)에서 그 위의 비트로 자리올림이 발생하는 것을 의미

 

 

- 수신측

  • 송신측에서 받은 모든 m비트의 세그먼트들과 함께 첵섬도 모두 더함
  • 만약 어떤 오류가 패킷에 있지 않다면 모두 더한 값은 m비트가 모두 1이 됨
  • 비트 중의 하나라도 0이면 패킷에 오류가 있다는 것을 의미

data  =  10111011 | 10100011 | 01011010 | 11010101

* 1+1 = 1(캐리발생), 0

* 0+1 = 1

* 0+0 = 0

-> 첵섬까지 더한 값이 오류가 없다면 모두 1이 됨

 

예제) 다음 16비트 데이터를 8비트 세그먼트로 분류할 때, 송신측에서 보내는 첵섬값은 무엇인가?

        1010100100111001

 

풀이) seg1 = 10101001 

          seg2 = 00111001

                    => 11100010

 

답) 1의 보수(complement) -> 송신측에서 만든 첵섬값 : 00011101