13. 전송 오류 검출
가. 패리티 검사(Parity Check)
패리티 검사기법은 전송하려는 비트 블록의 끝에 한 비트의 0 또는 1을 추가하여, 블
록을 구성하는 비트의 1의 개수를 홀수나 짝수가 되도록 하는 기법으로 가장 간단하고
오래된 오류 검출 방식이다. 정보를 구성하는 비트 수가 적고, 오류가 발생할 확률이
낮을 때 사용한다. 비트 블록에서 값이 1인 비트들의 개수를 짝수가 되도록 패리티 비
트를 추가하는 것을 짝수 패리티 검사(Even Parity Check)라고 하고, 이와 반대로 값이
1인 비트들의 개수를 홀수가 되도록 패리티 비트를 추가하는 것을 홀수 패리티 검사
(Odd Parity Check)라고 한다. [그림 2-11]은 패리티 검사 과정의 예를 나타낸 것이다.
패리티 검사의 동작원리를 자세히 살펴보면 홀수 패리티를 사용하여 전송하는 경우
문자 A의 아스키코드인 ‘1000001’은 1의 개수가 짝수이므로 패리티 비트로서 1을 추
가하며, 문자 C의 아스키코드인 ‘1000011’은 1의 개수가 홀수이므로 패리티 비트 값
으로 0을 추가하게 된다. 짝수 패리티 검사의 경우도 동일하며 단지 1의 개수를 짝수
로 맞추어 패리티 비트를 추가하는 것만 다르다. 패리티 검사를 통한 오류검출 방법
은 오류의 검출을 위해 단지 1의 개수가 짝수 또는 홀수로 맞추어 패리티 검사를 수행
하기 때문에 짝수 개의 비트에 오류가 발생한 경우, 오류 검출이 불가능하다. [그림
2-12]는 패리티 검사를 통하여 오류검출이 가능한 경우와 그렇지 못한 경우를 나타낸
다. 하지만, 3비트의 오류가 발생했을 경우 오류 검출은 가능하지만 정확히 어떤 위
치에서 오류가 발생했는지를 파악하기란 쉽지 않다.
나. 블록합 검사(Block-sum Check)
블록합 검사는 2차원 패리티 검사 방법이라고도 하며, 1차원(수평)으로만 오류를
검출할 경우 2비트 오류의 경우 검출할 수 없는 문제점을 해결하기 위한 방법으로
서, 여러 개의 비트 블록에 대해 수평, 수직방향으로 오류 검사를 수행한다. 이 방식
은 패리티 비트를 생성하기 위하여 여러 비트 블록에서 동일한 자리에 위치한 비트
값들을 이용하여 패리티 검사를 수행한다. 이렇게 생성된 각 자리의 비트 값들에 대
한 패리티 비트들이 또 하나의 비트 블록이 되어 전송되며, 이때 추가된 비트 블록을
BCC(Block-sum Check Character)라고 부른다.
블록합 검사의 예를 보이고 있으며, 송신측에서 각 문자에 대해서는
수평방향으로 체크하여 홀수 패리티를 추가하고, 블록합 검사로는 짝수 패리티 검사
를 채택한 것을 볼 수 있다. 이때 수신측 문자 A 내부에 2개의 비트 오류가 발생했을
경우, 1차원 패리티 검사만으로는 오류가 검출되지 않지만, 블록합 검사를 통하여 오
류가 검출됨을 확인할 수 있다.
다. 해밍 코드(Hamming Code)
해밍 코드는 오류를 발견하고 수정할 수 있도록 고안된 코드이다. 이 코드는 검사
비트가 최소 3개는 되어야하며, 2진화 10진수의 4비트를 검사할 경우에도 전체 비트
가 7개이어야 가능하다. 해밍코드의 검사용 비트위치는 1, 2, 4에 패리티 검사비트가
배열되고 3, 5, 6, 7에는 정보 비트가 배열된다. 해밍 코드의 패리티 검사 비트 C1, C
2, C4는 다음과 같은 기능을 한다.
• C1은 비트 위치 1, 3, 5, 7에 대하여 짝수 패리티를 검사한다.
• C2는 비트 위치 2, 3, 6, 7에 대하여 짝수 패리티를 검사한다.
• C4는 비트 위치 4, 5, 6, 7에 대하여 짝수 패리티를 검사한다.
정상적으로 표현된 해밍 코드에 에러가 발생하여 10진수의 3이 [그림 2-15]와 같이
내용으로 바뀌었다고 가정하자.
에러를 찾는 방법은 [그림 2-16]과 같이 해밍 코드의 패리티 검사 비트 C1, C2, C4
각각에 대하여 짝수 패리티 검사를 수행하며, 구해진 2진수는 (010)2이므로 10진수로
바꾸면 (2)10이다. 그러므로 2열에서 에러가 발생했음을 알 수 있고 비트 1을 0으로 바
꿔주면 정정이 된다
라. 순환 중복 검사(CRC : Cyclic Redundancy Check)
순환 중복 검사는 여러 오류 검출 방식 중에서 가장 좋은 성능을 보이며, 여러 비트
에서 발생하는 집단 오류(burst error)도 검출이 가능한 방식이다. 오류 검출 방법은
우선 송신측에서는 전송할 데이터에 다항식을 적용하여 오류 검출 코드를 얻은 후,
이를 데이터에 추가하여 보내고 수신측에서는 오류 검출 코드를 포함하고 있는 수신
데이터를 송신측에서 적용한 것과 동일한 다항식으로 나누어 나머지가 0이면 그 데이
터는 오류 없이 수신된 것으로 판단하며, 나머지가 0이 아니면 데이터에 오류가 있다
고 판단하여 다시 전송해 줄 것을 송신측에 요청한다. 일반적으로 사용되는 오류 검
출 코드는 16차 또는 32차의 다항식을 사용하며 실제 많이 쓰이고 있는 오류 검출 코
드의 생성 다항식은 다음과 같다.
CRC
16과 CRCITU-T는 WAN(Wide Area Network)에서 주로 사용되고 있는 생성다항식
이며, CRC32는 랜(LAN)에서 많이 사용되고 있다. 위의 수식에서 Xn의 의미는 n번째
비트는 1이라는 의미로, CRCITU-T의 경우를 2진 형태로 표현하면 10001000000100001
이 된다. [그림 2-17]은 송신측에서부터 수신측에 이르기까지의 순환 중복 검사 과정
을 보이고 있다
은 송신측에서의 오류 검출 코드의 생성과정의 예를 보이고 있으며, 동
작원리를 자세히 살펴보면, 먼저 송신측에서 전송하고자 하는 데이터 M에 2n을 곱
하여 메시지 다항식을 생성한다. 이는 데이터 M의 뒤에 n개만큼의 0을 추가한 것과
동일한 의미를 갖는다. 이후 이렇게 생성된 메시지 다항식을 오류 검출 코드 생성다
항식 G로 나누는데, 이때 나누기는 모듈로(modulo)-2 연산을 사용한다. 연산의 결
과로 나오는 n개 비트의 나머지가 오류 검출 코드가 되며 이를 데이터에 추가하여 전
송하게 된다
수신측에서는 오류검출코드를 포함하고 있는 수신데이터를 송신측과 동일한 생성
다항식 G로 나누어 오류를 검출하는데, 나누기 연산의 결과로 나오는 나머지가 모두
0인 경우에는 오류가 없는 경우이며 그렇지 않은 경우 오류가 존재한다고 판단한다.
[그림 2-19]는 수신측에서의 오류 검출 과정의 실제 예를 나타낸다.
'정보통신일반' 카테고리의 다른 글
정보통신기사, 정보통신학과, 통신직 등 정보통신일반 요점 정리 15. 유선 전송매체 (1) | 2023.03.27 |
---|---|
정보통신기사, 정보통신학과, 통신직 등 정보통신일반 요점 정리 14. 전송 오류 정정 (2) | 2023.03.26 |
정보통신기사, 정보통신학과, 통신직 등 정보통신일반 요점 정리 12. 전송 손실 (1) | 2023.03.24 |
정보통신기사, 정보통신학과, 통신직 등 정보통신일반 요점 정리 11. 통신 속도와 용량 (1) | 2023.03.24 |
정보통신기사, 정보통신학과, 통신직 등 정보통신일반 요점 정리 9. 스펙트럼과 대역폭 (2) | 2023.03.23 |