본문 바로가기
about COMPUTER/네트워크

#10. 디데통(2) / 오류 탐지 : 패리티 검사 + 체크섬

by saniii 2020. 10. 21.

[ 디지털 데이터 통신(2) - 오류 탐지 : 패리티 검사 + 체크섬  ]

 

 

 

 

# 오류 유형

• 전송과 수신 사이에서 비트가 변경될 때 에러가 발생

• 단일 비트 오류

 한 비트 변형

 인접비트는 영향을 받지 않음

 백색소음(열) 발생

• Burst error(길이 B ) bbit의 연속된 비트 오류

∘첫 번째 및 마지막 비트와 임의 수의 중간 비트가 오류로 수신되는 B 비트의 연속 시퀀스

∘데이터 속도가 높을수록 효과 커짐

∘임펄스 노이즈 또는 모바일 무선 환경에서 페이딩으로 발생

 

 

# 오류 탐지 (1)

• 설계에 관계없이 오류가 발생하여 전송된 프레임에서 하나 이상의 비트가 변경됨

• 프레임 : 하나 이상의 연속된 비트 시퀀스로 전송되는 데이터

• 단일 비트 오류의 확률이 증가할 때 프레임의 비트 오류 없이 도착할 확률은 감소함

• 프레임 길이가 증가함에 따라 프레임에 비트 오류 없이 도착할 확률은 감소

∘프레임이 길수록 비트가 많아지고 이들 중 하나가 잘못될 확률이 높아진다.

 

 

 

 

 

 

 

 

 

# 오류 감지 프로세스 (Error Detection Process)

 

 

# 패리티 검사 Parity Check

• 가장 간단한 오류 감지 방식은 데이터 블록 끝에 패리티 비트를 추가하는 것이다.

• 수신기에서 코드를 다시 계산하고 점검한다.

• 캐릭터가 짝수(짝수 패리티) 또는 홀수(이상 패리티) 번호를 1초 갖도록 패리티 비트 값을 선택함

• 일반적으로 비동기 전송에는 odd 동기식에는 even 패리티

• ( even number ) 비트 오류가 감지되지 않음 / 짝수개의 비트 오류는 감지 X

• XOR을 사용하여 구현

 

 

Parity check 하여 data를 보낼 때 다음과 같이 전송된다.

(형광펜 친 부분이 전송되는 최종 data)

즉, 1의 개수가 parity check의 조건에 부합하는지를 따져서 오류를 체크하는 것이다.

 

하지만 이런 방법은 갯수로 오류를 측정하기 때문에 오류가 두개 났을 때 오류를 인지하지 못한다.

 

예를 들어 0 1 순서로 전달되어야할 data가 변조되어 1 0 으로 보내졌을 때

오류가 난 것이지만 1의 총 개수는 여전히 같기 때문에 오류로 인식하지 못한다. 

 

그래서 나온 방법이 Two-Dimensional parity check

사용하는 방법은 다음과 같다.

 

행과 열을 각자 parity check함으로서  위의 상황을 보완한다.

 

하지만 이 방법에도 허점은 존재한다. 바로 사진 속의 상황!!

 

# 인터넷 체크섬 Internet Checksum (3-4계층)

• IP, TCP, UDP를 포함한 많은 인터넷 표준 프로토콜에 사용되는 오류를 감지하는 코드

• ones-complement operation

∘0은 1로 1은 0으로 바꾸어주는 연산

• ones-complement addition

∘두 숫자는 부호 없는 이항 정수로 처리하고 둘을 더한다.

∘가장 왼쪽 비트에서 1+1로 앞자리로 올라가는 수 carry 발생 시(이진수 연산임) 1을 총합에 더한다.

 

• 패리티 스키마보다 더 큰 오류 감지 기능 제공

• CRC보다 훨씬 덜 효과적

• 그럼에도 인터넷 프로토콜 채택 이유: 효율성

∘소프트웨어에서 쉽게 구현

∘낮은 링크 레벨에서는 강력한 에러 검출코드를 사용하므로 (예: CRC-2계층)

∘인터넷 체크섬은 단순히 오류에 대한 추가 end-to-end 확인일 뿐이다.

 

이렇게만 보면 사실 뭔말인지 잘 모르지 않나? 그래서 예제를 하나 더 가져왔다.

 

1) checksum을 적용하여 데이터 5AD3 EE35 를 전송하는 방법은?

2)  checksum이 적용된 데이터 59D3 EF35 B6F6 를 전송받았을 때 오류가 없는지 확인하는 방법은?

 

 

 

 

 

 

 

댓글