리루

Parity Bit와 Checksum 본문

# Study/Network

Parity Bit와 Checksum

뚱보리루 2017. 4. 5. 11:16

http://m.blog.naver.com/ansdbtls4067/220886661657

---------------------------------------------------------------------------------------------------------------

 

1. Parity bit란

 - 패리티 비트는 시리얼 통신에서 송수신 되는 데이터의 오류를 검출하기 위해서 사용되는 일종의 오류식별자이다.

 - 정보의 전달 과정에서 오류가 생겼는지를 검사기 위해 추가된 비트이다.

 - 전송하고자 하는 데이터의 끝에  비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수,짝수)가 있다.

 - 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다.

 

 

- 위 그림과 같이 실제 전송하고자 하는 8-Bit 데이터 외에 추가적으로 패리티 비트 하나를 추가하여 송수신을 하게된다.

 - 이 때, 추가적으로 붙게되는 패리티 비트는 짝수 패리티와 홀수 패리티가 있다.

 

1-1. 짝수 패리티(Even Parity)와 홀수 패리티(Odd Parity)

 - 전송하고자 하는 8-Bit 데이터에 추가적으로 붙게되는 패리티 비트를 짝수 패리티로 설정할 것인가 홀수 패리티로 설정할 것인가에 따라서 붙게되는 패리티 비티의 값이 달라지게 된다.

 - 짝수 패리티는 실제 송신하고자 하는 데이터의 각 비트의 값 중에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것이다.

 - 홀수 패리티는 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방법이다.

 

1-2. Parity Bit 결론

 - 시리얼 통신에 있어서 패리티 비트를 추가해 데이터를 송수신 하는 이유는 바로 데이터 송수신 과정에서 각 비트를 단위 시간당 하나씩 보내게 되어있는데, 이때 알 수 없는 요인에 의해서 비트의 값이 틀어져 1이 0으로 바뀌거나 0이 1로 바뀌었을 때 이를 확인 할 수 있도록 하기 위함이다.

 - 즉, 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산함으로써 데이터 오류 발생 여부를 알 수 있다. 그러나 패리티 비트는 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다는 단점이 있다.

 - 패리티 비트는 시리얼 통신의 거리가 상당히 멀 경우에 주로 적용이 되며, 송수신 거리가 짧을 경우에는 보통 Checksum 데이터를 추가하는 방법으로 데이터의 오류 검출을 한다.

 

 

2. Checksum

 

 - Checksum은 데이터의 저장이나 전송에서 무결성을 보증하기 위해 사용된다.

 - Checksum은 데이터를 이용하여 계산한 값을 이용한다.

 - 네트워크 상에서 데이터가 전송될 때 비트가 바뀌거나(toggle), 없어지거나(missing), 중복되는 등(duplicate)의 에러가 발생할 수 있다. 따라서 수신된 데이터가 송신한 데이터와 같은 것인지 확신할 수 없다. 이런 이유 때문에 네트워크 프로토콜에서는 에러를 잡기 위해 checksum을 자주 이용한다.  

 - 전송측에서 데이터를 이용하여 checksum을 계산하여 데이터에 붙여 함께 전송한다. 받는 쪽에서는 전송측에서 했던 같은 알고리즘으로 동일하게 checksum을 계산한다. 만약 계산된 checksum 값이 데이터와 함께 전송된 checksum값과 동일하면 에러가 일어나지 않은 것이고, 불일치하면 에러가 발생한 것이다.

 - 어떤 checksum 알고리즘은 에러가 발생할 곳을 계산하여 에러를 고치기도 한다. 만약 복구가 불가능한 에러가 발생하면, 수신측에서는 건네 받은 패킷을 폐기해버린다. 네트워크 프로토콜에 의해 이 데이터 손실은 무시되거나, 송신측에서 이걸 감지하여 다시 전송할 수 있도록 한다.

 - Checksum을 이용하면 감지되지 않았던 전송 에러수를 많이 줄일 수 있다. 하지만 보통의 checksum 알고리즘은 에러 발견을 100%로 보장하지는 못한다. 따라서 아주 적은 수의 에러는 발견되지 못한채로 남게된다.

 - Checksum 알고리즘에는 자주 사용되는 CRC32 알고리즘을 포함한 몇몇 다른 종류의 알고리즘들이 있다.

 - Checksum 알고리즘은 네트워크 상의 예상 에러발생률, 에러 검출의 중요도, 퍼포먼스 등을 고려하여 선택되어 진다.

 

'# Study > Network' 카테고리의 다른 글

패킷을 통한 TCP/UDP 비교  (1) 2017.03.27
흐름제어(Flow control)과 혼잡제어(Congestion control)  (0) 2017.02.06
Big Endian and Little Endian  (0) 2017.01.11