본문 바로가기

Library/Data Communication

오류 검출(Error Detection)

오류 검사의 목적이 오류 정정이라 하더라도, 많은 경우에 먼저 오류를 찾아내야 한다. 오류 정정보다 오류 검출이 더 간단하며, 오류 정정의 첫 번째 과정이다.

오류를 검출하는 가장 단순한 방법 중 하나는 데이터 단위를 중복해서 전송하는 방법이다. 그러면 수신 장치는 두 데이터 사이의 비트 단위를 비교할 수 있다. 불일치는 오류를 가리키며, 적절한 오류 수정을 할 수 있다. 문젠, 데이터를 중복해서 전송하는 것은 매우 느리며, 비효율적이란 점이다. 전송 시간이 중복해서 보내는 만큼 더 걸리며, 비트 단위로 각 단위를 비교해는데 추가적으로 시간이 소모된다.

따라서, 전체 데이터 단위를 다시 보내는 것보다 보다 짧은 비트 그룹을 각 단위의 끝에 추가할 수 있다. 이러한 기법을 중복(redeundancy)이라 한다. 이 비트들은 전송의 정확도를 알아내고 나면 더 이상 사용되지 않는다. 즉, 데이터 단위가 생성되면, 데이터 단위는 부호화된 중복 검사(redundancy check)를 거친다. 이제 데이터 단위는 몇 개의 비트만큼 확장되어 링크를 통해 수신자에게 전달되고, 수신자는 전체 비트열을 검사 함수(redundancy function)에 넣는다. 수신된 데이터 단위가 검사 기준을 통과하면 데이터 단위의 데이터는 받아들여지고, 검사에 사용되었던 비트(중복 비트, redundancy bit)들은 폐기된다.

데이터 통신에서는 패리티, 순환 중복 검사(CRC, Cyclic Redundancy Check)와 검사합(checksum)이라는 세 종류의 중복 검사가 사용된다.


*중복이라고 해서, 이것이 반드시 동일한 데이터의 반복을 가리키는 것이 아니다. 오류 검출을 위한 추가적인 정보를 데이터 단위에 포함시킬 때 이것을 중복이라고 하는데, 이렇게 본다면 이때의 redundancy에 해당하는 다른 번역 용어가 필요할 것 같다.