핵심 인사이트

  1. 오류 탐지(Error Detection)는 데이터 전송·저장 과정에서 비트 오류를 발견하는 기술로, 패리티 비트(Parity Bit)·체크섬(Checksum)·CRC(Cyclic Redundancy Check)는 중복 정보 추가량과 탐지 능력의 트레이드오프를 각각 다른 수준으로 구현한다.
  2. CRC는 다항식 나눗셈 원리를 이용해 1~수 바이트의 작은 FCS(Frame Check Sequence)로 버스트 오류까지 탐지할 수 있어, 이더넷·SATA·USB 등 거의 모든 디지털 통신 규격의 표준으로 채택됐다.
  3. 오류 탐지는 "발견만" 하고, 오류 정정(Error Correction)은 ARQ(자동 재전송)나 FEC(Forward Error Correction) 방식으로 분리 처리한다 — 이 분리 설계가 프로토콜 계층화의 핵심 원칙이다.

Ⅰ. 패리티 비트

패리티 비트 (Parity Bit):

짝수 패리티 (Even Parity):
  데이터 7비트 + 패리티 1비트 = 8비트
  전체 1의 개수가 짝수가 되도록 패리티 설정

예시:
  데이터: 1010001 (3개의 1)
  짝수 패리티: 1010001 | 1 (1 추가 -> 1이 4개)

1비트 오류 탐지:
  수신: 1010011 | 1 (1이 5개, 홀수 -> 오류 탐지)

한계:
  2비트 동시 오류 -> 탐지 불가 (1의 수 변화 없음)
  오류 위치 알 수 없음 -> 정정 불가

홀수 패리티 (Odd Parity):
  전체 1이 홀수가 되도록 설정
  (짝수 패리티와 동일 원리, 반대 값)

📢 섹션 요약 비유: 패리티 비트는 계란 한 판을 셀 때 "짝수개면 정상"으로 검사하는 것 — 하나 깨져도 알 수 있지만 두 개 깨지면 놓친다.


Ⅱ. 체크섬

체크섬 (Checksum):

Internet Checksum (RFC 793):
  데이터를 16비트 단위로 쪼갬
  모두 더함 (1의 보수 덧셈)
  결과의 1의 보수가 체크섬

예시:
  데이터: 0xB3E7 + 0x4F2A = 0x0311 (올림 처리)
  체크섬: ~0x0311 = 0xFCEE

검증:
  수신측: 데이터 + 체크섬 합산 = 0xFFFF -> 정상

TCP/IP 헤더에 사용:
  IPv4, TCP, UDP 모두 체크섬 포함
  IPv6: 헤더 체크섬 제거 (상위 계층 의존)

한계:
  같은 위치 비트 오류 쌍은 탐지 불가
  CRC보다 탐지력 약함

📢 섹션 요약 비유: 체크섬은 영수증 합계 검산 — 모든 항목 더한 값이 맞으면 OK, 틀리면 어딘가 오류 있음.


Ⅲ. CRC

CRC (Cyclic Redundancy Check):

원리: 다항식 나눗셈
  송신자: 데이터 D(x)를 생성 다항식 G(x)로 나눔
          나머지 R(x)를 FCS로 붙여 전송
  수신자: D(x)+R(x)를 G(x)로 나눠 나머지 = 0이면 정상

예시 (CRC-8):
  생성 다항식: x^8 + x^2 + x + 1 (= 0b100000111)
  데이터: 101001
  계산 과정: XOR 기반 이진 나눗셈

표준 CRC 다항식:
  CRC-8:   이더넷, 1-wire 프로토콜
  CRC-16:  USB, MODBUS
  CRC-32:  이더넷 FCS, ZIP, SATA, PNG
  CRC-64:  ECMA, 저장 장치

탐지 능력:
  - 모든 단일 비트 오류 탐지
  - 모든 이중 비트 오류 탐지 (적절한 다항식)
  - 홀수 개 비트 오류 탐지
  - 길이 r 이하의 버스트 오류 100% 탐지

📢 섹션 요약 비유: CRC는 비밀 암호 나눗셈 — "보낸 숫자를 특정 수로 나눈 나머지"가 0이면 오류 없음, 아니면 뭔가 바뀐 것.


Ⅳ. 오류 정정 방식

오류 탐지 후 처리 전략:

ARQ (Automatic Repeat Request):
  탐지 후 재전송 요청
  종류:
    Stop-and-Wait ARQ: 프레임 하나씩
    Go-Back-N ARQ: 오류 이후 전체 재전송
    Selective Repeat ARQ: 오류 프레임만 재전송
  적용: TCP, Wi-Fi, 유선 통신

FEC (Forward Error Correction):
  탐지 + 정정 데이터 포함 (재전송 없음)
  해밍 코드 (Hamming Code): 1비트 정정
  리드-솔로몬 코드: 다수 바이트 정정
  LDPC / 터보 코드: 4G/5G 이동통신
  적용: 위성통신, 광통신, DVD/Blu-ray

비교:
  ARQ: 재전송 가능한 환경 (인터넷)
  FEC: 재전송 불가 또는 지연 민감 환경 (위성)

📢 섹션 요약 비유: ARQ는 선생님이 틀린 답 보고 다시 써오라는 것, FEC는 시험지에 답과 정답 힌트를 함께 제출하는 것.


Ⅴ. 실무 시나리오 — 이더넷 FCS

이더넷 프레임 전송 (CRC-32):

  [프리엠블][목적지 MAC][출처 MAC][타입][데이터][FCS]
                                              ^^^^
                                           CRC-32 (4바이트)

송신 NIC:
  1. 데이터 준비 완료
  2. CRC-32 하드웨어 계산 (전용 레지스터)
  3. FCS 필드에 삽입 후 전송

수신 NIC:
  1. 프레임 수신
  2. CRC-32 재계산
  3. 수신 FCS와 비교
     일치: 프레임 수락, 상위 계층 전달
     불일치: 프레임 폐기 (자동)
     
성능:
  10Gbps NIC: CRC 검사 하드웨어 오프로딩
  CPU 개입 없음 -> 라인 속도 유지

이더넷 CRC-32 오류 탐지율:
  32비트 미만 버스트 오류 -> 100% 탐지
  32비트 랜덤 오류 -> 1 - 2^(-32) ≈ 99.9999999%

📢 섹션 요약 비유: 이더넷 FCS는 택배 포장 후 봉인 스티커 — 수신측이 스티커 훼손 여부로 내용물 변형 확인.


📌 관련 개념 맵

오류 탐지 (Error Detection)
+-- 방법
|   +-- 패리티 비트 (단순, 1비트)
|   +-- 체크섬 (TCP/IP)
|   +-- CRC (이더넷, SATA, USB)
+-- 탐지 후 처리
|   +-- ARQ (재전송)
|   |   +-- Stop-and-Wait
|   |   +-- Go-Back-N
|   |   +-- Selective Repeat
|   +-- FEC (전방 오류 정정)
|       +-- 해밍 코드
|       +-- 리드-솔로몬
|       +-- LDPC / 터보 코드
+-- 적용 계층
    +-- 물리/데이터링크: CRC, 패리티
    +-- 네트워크/전송: 체크섬 (IP, TCP)

📈 관련 키워드 및 발전 흐름도

[패리티 비트 (1940s)]
단순 홀짝 검사
      |
      v
[체크섬 (1960s)]
TCP/IP 인터넷 체크섬
      |
      v
[CRC (Castagnoli, 1961~)]
이더넷 CRC-32 (1980)
      |
      v
[해밍 코드 → RS 코드]
오류 정정으로 확장 (CD, DVD)
      |
      v
[LDPC / 터보 코드 (1990s~)]
4G LTE, 5G NR 표준
      |
      v
[현재: 하드웨어 오프로딩]
NIC/SSD 전용 CRC 엔진
CPU 개입 없는 라인 속도 처리

👶 어린이를 위한 3줄 비유 설명

  1. 오류 탐지는 편지를 보낼 때 마지막에 "이 편지 글자 수는 37개예요"라고 적는 것 — 받는 사람이 세어보고 다르면 뭔가 잘못된 거예요.
  2. CRC는 더 복잡한 수학 계산으로 만든 "비밀 잠금 번호"여서 데이터가 조금이라도 바뀌면 번호가 달라져요.
  3. 오류를 발견했을 때 다시 보내달라고 하는 방법(ARQ)과, 처음부터 정답지를 같이 보내서 스스로 고치는 방법(FEC) 두 가지가 있어요!