💡 핵심 인사이트
통신 중에 발생하는 에러는 보통 '1비트'만 예쁘게 깨지지 않습니다. 번개가 치면 0.1초 동안 전기가 요동치면서 **수십 비트가 연속적으로 무더기로 박살 나는 '버스트 에러(Burst Error)'**가 발생합니다.
패리티 검사 등은 이 폭풍우를 막지 못하지만, CRC는 다항식의 길이(n비트)보다 짧은 버스트 에러를 '100% 확률로 무조건' 잡아내는 미친 방어력을 가집니다.


Ⅰ. 단일 비트 에러 vs 버스트 에러

  • 단일 비트 에러 (Single-bit Error): 데이터가 날아가다가 어쩌다 딱 1개의 0이 1로 뒤집힌 경우. (패리티 검사로도 쉽게 잡힘).
  • 버스트 에러 (Burst Error): 외부의 강력한 노이즈(스파크, 번개, 전파 간섭) 때문에 2개 이상의 비트가 연속적으로, 혹은 뭉텅이로 훼손되는 현상입니다.
    • 예: [1] 0 0 1 1 [0] ➔ 양 끝에 있는 [1][0]이 깨지면, 그사이에 있는 멀쩡한 0 0 1 1까지 모두 묶어서 '총 6비트 길이의 버스트 에러'가 발생했다고 정의합니다.

Ⅱ. CRC의 버스트 에러 검출 한계 (신의 방어력)

CRC가 이더넷의 표준이 된 이유는 이 무더기 에러를 잡아내는 수학적 확률이 압도적이기 때문입니다.

만약 우리가 32비트 꼬리표를 다는 **CRC-32 (생성 다항식의 차수 $r=32$)**를 사용한다고 가정해 봅시다.

  1. 길이가 32비트 이하인 버스트 에러가 났을 때
    • 벼락이 쳐서 32비트 이내의 데이터가 통째로 박살 났습니다.
    • 검출 확률: 100% 무조건 잡아냅니다. 수학적으로 $r$차 다항식은 길이 $r$ 이하의 버스트 에러를 무조건 나눗셈(나머지 0이 안 나옴)에서 걸러냅니다.
  2. 길이가 33비트(r+1)인 버스트 에러가 났을 때
    • 검출 확률: 99.9999999% (정확히는 $1 - (1/2)^{r-1}$ 의 확률)로 잡아냅니다.
  3. 길이가 34비트(r+2 이상)인 초거대 버스트 에러가 났을 때
    • 검출 확률: 99.99999997% (정확히는 $1 - (1/2)^r$ 의 확률)로 잡아냅니다.

즉, 이더넷 프레임을 보낼 때 CRC-32를 쓰면, 아무리 벼락이 크게 쳐서 데이터가 수백 비트 연속으로 쓰레기가 되어도, 그 쓰레기를 제수로 나눴을 때 우연히 나머지가 '0'으로 딱 떨어져 버려서 컴퓨터가 정상으로 착각할 확률은 약 43억 분의 1에 불과합니다.

📢 섹션 요약 비유: 패리티 검사가 그물코가 너무 커서 멸치 떼(버스트 에러)가 한꺼번에 구멍으로 쑥 빠져나가 버리는 **'엉성한 뜰채'**라면, CRC는 멸치가 수천 마리 몰려와도 절대 빠져나가지 못하게 촘촘하게 엮어놓은 **'초정밀 나노 그물망'**입니다. 길이가 CRC 꼬리 길이보다 짧은 물고기는 100% 그물에 걸리도록 수학적으로 설계되어 있습니다.