에러 검출

 

    데이터가 전송될 때 전송되는 데이터는 근본적으로 에러가 발생한다. 따라서 정확한 데이터 전송을 위해서는 에러를 검출하고 교정하는 과정이 필수적으로 수반되어야하며 이것은 전송하고자 하는 데이터에 얼마간의 정보를 추가로 전송하여 에러를 교정하며 가장 간단한 방법으로는 parity bit가 있다. Packet을 송신하는 경우에도 패킷의 에러를 보완하는 수단이 필요한데 대표적인 방법으로는 체크섬(checksum)CRC(Cyclic Redundancy Checks)가 있다.

 

(a) parity bit  

    Parity bit는 전송하고자하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법으로 2가지 종류의 parity bit가 있다. even parity는 전체 bit에서 1의 개수가 짝수가 되도록 parity bit을 정하는 것인데 예를 들어 만약 데이터 bit에서 1의 개수가 홀수이면 parity bit 1로 정한다. Odd parity는 전체 bit에서 1의 개수가 홀수가 되도록 parity bit을 정하는 방법이다. 이렇게 parity bit를 정하여 데이터를 송신하면 수신 측에서는 수신된 데이터의 전체 bit를 계산하여 parity bit를 다시 계산할 수 있음으로 데이터에 에러 발생 여부를 알 수 있다. 그러나 parity bit는 에러 발생 여부만 알 수 있지 에러를 수정할 수는 없다.

 

(b) Checksum

    Checksum packet 속의 하나의 field로 구성하며 데이터를 이진수(binary number)의 연속으로 간주하여 그 이진수의 합을 계산하는 방법이다. 예를 들어 16 bits checksum을 사용하는 경우 데이터를 16 bits씩 나누어 16진수로 표현한 다음 그 합을 계산하여 16으로 나눈 나머지에 해당되는 값 checksum으로 사용하는 방법이다. 이 방법의 장점은 우선 checksum의 크기가 작아 checksum 1개로 packet 전체를 조사할 수 있음으로 오버헤드를 줄일 수 있고 덧셈 연산만을 수행함으로 계산이 용이하다.  

 

사용자 삽입 이미지

 

 

 

 

 

 

 

    그러나 checksum은 발생 가능한 모든 에러를 검출할 수 없다는 단점이 있다. 예를 들어 0001001000110001로 표현되는 데이터를 송신하는 도중 0011000000010011로 변형된 경우, 두 경우의 checksum 4 bits씩 나누어 계산하면 같은 값을 가짐으로 에러를 검출할 수 없다.

 

사용자 삽입 이미지
       

 

 

 

 

 

 

 

 

(c) CRC

    에러 검출의 일반적인 과제는 packet에 보다 적은 양의 정보를 추가하여 보다 많은 에러를 검출하고자 하는 것으로 checksum 보다 많이 사용되는 방법으로 CRC가 있다. CRC shift register라는 전기회로를 사용하여 각 비트에 "Exclusive OR" 연산을 위한 게이트를 설치하여 CRC 값을 구하는 것으로 계산이 빠르다는 장점이 있다. 실제 CRC 구현은 16-bit 혹은 32-bit CRC를 사용한다.

 

사용자 삽입 이미지

Posted by 응이

Dream come true.
응이

달력

태그목록