오류 검출이란?
데이터가 전송되는 도중에 비트가 바뀌는 오류(예: 1 → 0)가 발생할 수 있다.
이런 오류를 잡아내기 위해 추가 정보를 붙이는 것이 바로 오류 검출이다.
기본 개념
| 용어 | 뜻 |
| D | 원래 데이터 (예: ‘1011001’) |
| EDC | 오류 검출을 위한 추가 비트 |
| <D, EDC> | 전송할 전체 데이터 |
검사를 더 정확하게 하고 싶으면 EDC를 길게 만들면 된다.
1. 패리티 검사 (Parity Checking)
(1) 단일 비트 패리티
- 홀수 or 짝수 개의 1을 만들기 위한 비트를 뒤에 붙인다.
예:
- 데이터: 101100 → 1이 3개(홀수) → 짝수로 만들려면 1 하나 더!
- 패리티 비트: 1
- 전송 데이터: 1011001
📌 단점: 2개 이상 비트가 바뀌면 못 잡을 수도 있다.
(2) 2차원 패리티
- 행과 열 각각에 패리티 비트를 붙인다.
- 어디서 오류가 났는지도 알 수 있다!
예시:
원래 데이터:
101
010
111
→ 각 행, 열에 패리티 비트 추가!
이렇게 하면 하나의 비트 오류는 잡고 수정도 가능하다.
2. 인터넷 체크섬 (Checksum)
- UDP, TCP에서 사용함
- 16비트 단위로 쪼개서 모두 더한 후, 그 값을 보낸다.
전송 과정
- 데이터를 16비트 숫자 단위로 자름
- 다 더함 + overflow 생기면 앞쪽에 더해줌 (1의 보수 덧셈)
- 결과를 1의 보수(비트 반전) → 이게 체크섬
receiver:
- 받은 데이터 + 체크섬을 다시 모두 더해봄
- 결과가 모두 1이면 OK
- 아니라면 → 오류 발생!
📌 하지만 모든 오류를 100% 잡을 수는 없음
3. CRC (순환 중복 검사)
가장 강력한 오류 검출 방식 (이더넷, Wi-Fi 등에서도 사용!)
아이디어:
- 데이터를 2진수 수학으로 보고, 특정 수(G)로 나눔
- 나눗셈의 나머지(R)를 붙여 보냄
- receiver에서도 나눠보고 나머지가 0이 아니면 오류라고 판단
예시 구조:
| 용어 | 의미 |
| D | 전송할 데이터 (예: 1101011011) |
| G | 생성 다항식 (예: 10011) – 프로토콜에 따라 정해짐 |
| r | G의 비트 수 - 1 (위 예시는 5비트 → r=4) |
| R | D에 더할 오류검출 비트 (CRC 비트) |
sender:
- D에 0을 r개 붙여서 → D · 2^r
- 이것을 G로 나눔 → 나머지 R 구함
- R을 D 뒤에 붙임 → <D, R> 전송
receiver:
- 받은 <D, R>을 G로 나눔
- 나머지가 0이면 OK, 아니면 오류
CRC의 강력함
- Burst Error (연속된 여러 비트 오류)를 잘 잡음!
- 정해진 G에 따라 특정 오류 유형을 확실히 잡아냄
'CS > Network' 카테고리의 다른 글
| [네트워크] LANs (0) | 2025.06.08 |
|---|---|
| [네트워크] Multiple Access Protocols (0) | 2025.06.08 |
| [네트워크] Link Layer 개요 (1) | 2025.06.08 |
| [네트워크] SDN (0) | 2025.06.06 |
| [네트워크] BGP (0) | 2025.06.06 |