오류 검출
Parity bit
개념
- 데이터 전송 과정에서 오류를 검출하기 위해 추가된 비트
사용 방식
- 짝수 패리티 비트
- 전달하고자 하는 데이터의 1의 개수를 기준으로 홀수인 경우 짝수가 되도록 패리티 비트를 1로 설정
- 전달하고자 하는 데이터의 1의 개수를 기준으로 짝수인 경우 짝수가 되도록 패리티 비트를 0으로 설정
- 홀수 패리티 비트
- 전달하고자 하는 데이터의 1의 개수를 기준으로 홀수인 경우 홀수가 되도록 패리티 비트를 0으로 설정
- 전달하고자 하는 데이터의 1의 개수를 기준으로 짝수인 경우 홀수가 되도록 패리티 비트를 1로 설정
특징
- 데이터를 송수신하는 과정에서 비트 값이 왜곡되어 전달되는 경우에 이를 검출하기 위해 사용
- 단순히 오류를 검출하는 기능만 있기 때문에 오류를 검출하였을 경우 재전송 요청 가능
- 주로 데이터 송수신 거리가 멀 경우에 사용하고 짧을 경우에는 checksum을 사용
Checksum
개념
- 송신된 데이터의 무결성을 보호하는 방법
- 나열된 데이터를 더하여 checksum 숫자를 얻고 이것을 정해진 비트의 수로 재구성
- 전달받은 데이터를 더하고 checksum을 더했을 때를 비교하여 데이터 손상 여부를 확인
사용 방식
- 4바이트 데이터가 있다면 모든 바이트를 더한 값을 구한다.
- 모든 바이트를 구한 값의 carry nibble을 버린다.(nibble은 4bit를 의미)
- checksum 크기를 1바이트로 구성하기 위한 과정
- 모든 바이트를 더한 값의 2의 보수를 구한다(2의 보수는 비트가 1이면 0, 0이면 1로 바꾸고 1을 더해주는 연산으로 합이 0이 되도록 하는 과정)
- 2의 보수를 구한 값을 checksum으로 설정하고 데이터를 송신할 때 받은 데이터를 모두 더하고 이 checksum을 더하고 carry nibble을 버렸을 때 0으로 나오면 오류가 없다는 뜻
해밍 코드
개념
- 패리티 비트를 활용하여 에러가 발생한 비트의 위치를 확인하고 수정하기 위한 코드
사용 방식
- 송신하려는 데이터의 비트 사이에 패리티 비트를 1,2,4,8 …(2^n) 순으로 삽입한다.
- 2^k-k-1≥n, k는 체크비트이고 n은 데이터 비트
- 0부터 2^k-1까지가 k개의 체크비트가 관리할 수 있는 값의 범위이다.
- 2^k-1≥n+k는 체크비트가 관리할 수 있는 범위가 데이터 비트와 체크비트의 합 이상이라는 뜻으로 위의 식이 도출된다.
- 각각의 패리티 비트는 본인의 위치를 포함하여 자신의 위치 값만큼의 수를 살피고 다시 자신의 위치 값만큼 건너뛰고 다시 살피고를 반복하여 1의 개수를 확인하고 패리티 값을 정한다.
- 이렇게 패리티 값을 정렬하였을 때 송신된 값과 수신된 값을 XOR 연산을 하여 10진수로 나타내면 그 수를 오류가 검출된 비트의 위치로 그 값을 수정하면 오류를 수정할 수 있다.
- 0일 경우에는 오류가 없다는 것을 의미한다.
Reference
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ansdbtls4067&logNo=220886661657
'Software Engineering' 카테고리의 다른 글
WAS & Web Server (0) | 2023.05.01 |
---|---|
PWA (0) | 2023.04.29 |
Real Number (0) | 2023.04.23 |
CSR & SSR (0) | 2023.04.20 |
Logging level (0) | 2023.04.19 |