1. 전송 제어 기능이란?
데이터링크 계층은 단순히 데이터를 전달하는 데 그치지 않고, 다음과 같은 세 가지 핵심 기능을 수행한다:
제어 | 기능 설명 |
회선 제어 (Line Control) | 누가 언제 전송할지를 결정 |
흐름 제어 (Flow Control) | 수신 측이 감당 가능한 데이터 양만큼만 전송 |
오류 제어 (Error Control) | 데이터 전송 중 발생한 오류를 검출하거나 수정 |
이러한 제어 기능이 필요한 이유는 다음과 같다:
- 프레임 단위 전송으로 인해 동기화 문제 발생
- 통신 회선 구성 방식 및 처리 속도 차이에 따른 충돌
- 물리적 오류 발생 가능성 (전기적 간섭, 잡음 등)
- 다중 사용자 환경에서의 전송 대상 식별 필요
2. 데이터 전송 절차 요약
데이터 전송은 다음의 5단계를 통해 이루어진다:
- 회선 연결 – 단말기와 통신 회선을 물리적으로 접속
- 데이터링크 확립 – 신뢰성 있는 데이터 전송 경로 구성
- 데이터 전송 – 오류 검출 및 제어 기능을 이용하여 전송
- 데이터링크 해제 – 논리적 연결 해제
- 회선 해제 – 물리적 연결 종료
3. 오류 검출 방식의 핵심 개념
오류를 검출하기 위해선 데이터에 **리던던시 비트(중복 정보)**를 추가한다. 이를 통해 수신 측은 데이터의 무결성을 검증할 수 있다.
주요 오류 검출 방식
방식 | 특징 |
패리티 검사 | 간단하지만 단일 비트 오류만 검출 가능 |
블록합 검사 | 2차원 패리티 적용으로 검출률 향상 |
CRC | 수학적 다항식 기반, 버스트 오류까지 검출 가능 |
검사합 (Checksum) | 데이터를 여러 조각으로 나누어 총합으로 오류 검출 |
4. 대표적인 오류 검출 방식 정리
4.1 패리티 검사 (Parity Check)
- 1비트 리던던시를 추가하여 오류 검출
- 홀수/짝수 패리티 방식 존재
예시:
- 데이터: 1001010
- 짝수 패리티 사용 시 → 1의 개수 = 3 → 패리티 비트 1 추가 → 전송: 10010101
❗ 단점: 짝수 개의 오류가 발생하면 검출 불가능
4.2 블록합 검사 (Block Sum Check)
- VRC (Vertical Redundancy Check) + LRC (Longitudinal Redundancy Check)
- 2차원적으로 데이터를 검사하여 오류 위치까지 추적 가능
장점:
- 1비트 오류 정정 가능
- 여러 비트 오류 검출 가능
4.3 순환 중복 검사 (CRC)
- 데이터를 이진수 다항식으로 보고 특정 생성 다항식으로 나누기 연산 수행
- 버스트 오류도 검출 가능하여 가장 널리 사용됨
예시
- 생성 다항식: G(x)=x5+x2+1G(x) = x^5 + x^2 + 1 → 이진수: 100101
- 데이터: 101101001
- 체크섬: 00010
- 전송 데이터: 10110100100010
수신 측은 다시 동일한 다항식으로 나누어 나머지가 0이면 정상, 아니면 오류로 판단
4.4 검사합 (Checksum)
- 데이터를 일정한 비트로 나누고, 이들의 합과 보수를 계산하여 오류 검출
예시:
- 데이터: 00101001, 11001011, 10010001, 10001110
- 합계 계산 후 1의 보수를 붙여 전송
- 수신 측은 동일한 방식으로 확인
5. 오류 검출 코드의 종류
5.1 해밍 코드 (Hamming Code)
- 1958년 리처드 해밍이 고안
- 1비트 오류 정정 + 2비트 오류 검출
- 해밍 거리를 기반으로 동작
5.2 블록 코드 (Block Code)
- 데이터를 고정 길이 블록으로 나누고 리던던시 추가
- 해밍 코드 외에도 BCH 코드, 리드-솔로몬 코드 등이 포함
- CD, DVD 같은 저장 장치에 사용
5.3 콘볼루션 코드 (Convolution Code)
- 데이터 흐름을 따라 연속 부호화
- 여러 비트 오류를 정정 가능
- 모바일 통신 등 실시간 전송에 적합
종류 | 설명 | 특징 |
해밍 코드 | 1비트 오류까지 수정 가능 | 최초의 오류 정정 코드 (1958년 개발) |
블록 코드 | 블록 단위로 리던던시 추가 | 저장장치(CD, DVD)에서 많이 사용 |
콘볼루션 코드 | 연속적인 데이터 흐름에서 오류 정정 | 통신장치(휴대폰 등)에 사용됨 |
패리티 비트 | 1비트만 추가해 오류 검출 | 단순하지만 오류 정정은 못함 |
블록합 검사 | 패리티의 단점을 보완 | 두 비트 오류도 잡아냄 |
CRC | 다항식을 사용한 오류 검출 | 집단 오류에도 강력 |
정마크 부호 검사 | 1의 개수를 일정하게 유지 | 특수한 코드(2진-5진 등) 사용 |
6. 오류 수정 방식
구분 | 설명 | 특징 |
전진 오류 수정 (FEC) | 수신 측이 자체적으로 오류를 수정 | 재전송 없이 실시간 통신에 유리 |
후진 오류 수정 (BEC) | 오류 발생 시 송신 측에 재전송 요청 | 정확도 높지만 속도 저하 가능 |
- FEC 예시: 해밍 코드, 상승 코드
- BEC 예시: ARQ (자동 반복 요청), CRC + 재전송
7. CRC와 생성 다항식 이해하기
- CRC는 데이터를 이진수 다항식으로 보고, 특정 생성 다항식 G(x)G(x)로 나누어 체크섬을 구하는 방식이다. 모듈로-2 연산을 기반으로 하며, 덧셈과 뺄셈이 XOR 연산과 동일하다.
- 예시
- 전송 데이터: 101101001
- 생성 다항식: x5+x2+1x^5 + x^2 + 1 → 이진수: 100101
- 체크섬(나머지): 00010
- 최종 전송 데이터: 10110100100010
- 수신 측에서 동일한 연산 수행 → 나머지가 0이면 오류 없음
요약 정리
항목 | 내용 |
전송 제어 기능 | 회선 제어, 흐름 제어, 오류 제어 |
전송 절차 | 회선 연결 → 데이터링크 설정 → 전송 → 해제 |
오류 검출 방식 | 패리티 검사, 블록합 검사, CRC, 검사합 |
오류 검출 코드 | 해밍 코드, 블록 코드, 콘볼루션 코드 등 |
오류 수정 방식 | 전진 오류 수정(FEC), 후진 오류 수정(BEC) |