1. 전송 제어 기능이란?

데이터링크 계층은 단순히 데이터를 전달하는 데 그치지 않고, 다음과 같은 세 가지 핵심 기능을 수행한다:

제어  기능 설명
회선 제어 (Line Control) 누가 언제 전송할지를 결정
흐름 제어 (Flow Control) 수신 측이 감당 가능한 데이터 양만큼만 전송
오류 제어 (Error Control) 데이터 전송 중 발생한 오류를 검출하거나 수정

이러한 제어 기능이 필요한 이유는 다음과 같다:

  • 프레임 단위 전송으로 인해 동기화 문제 발생
  • 통신 회선 구성 방식 및 처리 속도 차이에 따른 충돌
  • 물리적 오류 발생 가능성 (전기적 간섭, 잡음 등)
  • 다중 사용자 환경에서의 전송 대상 식별 필요

2. 데이터 전송 절차 요약

데이터 전송은 다음의 5단계를 통해 이루어진다:

  1. 회선 연결 – 단말기와 통신 회선을 물리적으로 접속
  2. 데이터링크 확립 – 신뢰성 있는 데이터 전송 경로 구성
  3. 데이터 전송 – 오류 검출 및 제어 기능을 이용하여 전송
  4. 데이터링크 해제 – 논리적 연결 해제
  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비트 오류 정정 가능
  • 여러 비트 오류 검출 가능

블록합 검사
블록합 검사 2


4.3 순환 중복 검사 (CRC)

  • 데이터를 이진수 다항식으로 보고 특정 생성 다항식으로 나누기 연산 수행
  • 버스트 오류도 검출 가능하여 가장 널리 사용됨

예시

  • 생성 다항식: G(x)=x5+x2+1G(x) = x^5 + x^2 + 1 → 이진수: 100101
  • 데이터: 101101001
  • 체크섬: 00010
  • 전송 데이터: 10110100100010

수신 측은 다시 동일한 다항식으로 나누어 나머지가 0이면 정상, 아니면 오류로 판단

CRC 발생기와 검사기


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)

+ Recent posts