본문 바로가기
CS/Network

[네트워크] 오류 검출 및 정정 (error detection, correction)

by haerr 2025. 6. 8.

오류 검출이란?

데이터가 전송되는 도중에 비트가 바뀌는 오류(예: 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비트 단위로 쪼개서 모두 더한 후, 그 값을 보낸다.

 

전송 과정

  1. 데이터를 16비트 숫자 단위로 자름
  2. 다 더함 + overflow 생기면 앞쪽에 더해줌 (1의 보수 덧셈)
  3. 결과를 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:

  1. D에 0을 r개 붙여서 → D · 2^r
  2. 이것을 G로 나눔 → 나머지 R 구함
  3. R을 D 뒤에 붙임<D, R> 전송

 

receiver:

  1. 받은 <D, R>을 G로 나눔
  2. 나머지가 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