데이터 전송 코드 시스템

형진·2022년 5월 6일
0

네트워크

목록 보기
10/10

프레임

개념

  • 데이터 통신망에서 하나의 블록 또는 패킷으로 전송되는 정보의 단위
  • 데이터 프레임은 망의 데이터 링크층 프로토콜에 의하여 정의되며 망 노드 간의 매체(선로)상에서만 존재함
  • 프레임은 다른 layer들에서는 다른 형식을 취하고, 데이터는 데이터 프레임의 시작 및 끝 제어 정보 사이에 위치함
  • 프레임은 내부 정보를 표현하는 방식에 따라 문자 프레임과 비트 프레임으로 나눔

문자 프레임

  • 문자 프레임은 프레임의 내용이 문자로만 구성
  • 8비트 단위(또는 ASCII 문자 코드)의 고정 크기로 동작
  • 문자 프레임은 프레임의 내용이 문자로만 구성
  • 프레임구분
    • 프레임의 시작과 끝에 특수 문자를 사용하여 구분하는데 시작에는 DLE/STX가 나오고 끝에는 DLE/ETX를 두어 프레임을 다른 정보와 구분
    • 하지만 데이터 안에도 DLE/STX나 DLE/ETX 와 같은 동일 명령어가 포함되어 있을 수 있어 데이터를 읽는 과정에서 혼선을 일으킬 수 있음
      • 이러한 문제를 해결하기 위해 문자 스터핑이라는 기법을 사용
    • 문자 스터핑은 데이터에 DLE가 존재하면 강제로 DLE를 추가하는 작업을 한다.
      • DLE가 두 개가 연달아 나오게 되기 때문에 특수 문자로 인식하지 않는다.
      • 수신측에서 두 개의 DLE가 나오면 뒤에 있는 DLE를 제거하여 데이터를 읽는다.

프레임 구조

  • 프레임 구조
    • 프레임의 시작과 끝에 특수 문자 사용
      • 시작 : DLE / STX
      • 끝 : DLE / ETX
    • 전송 데이터에 특수 문자가 포함되면 혼선이 발생
      문자 프레임 구조
  • 문자 스터핑Character Stuffing
    • 문자 프레임의 전송 과정에서 제어 문자를 추가하는 기능
      문자 스터핑 구조
  • 전송 데이터가 DLE 문자를 포함하면 뒤에 DLE 문자 하나를 강제 추가
  • 데이터에 DLE 문자가 두 번 연속 있으면 하나의 DLE 문자 삭제
  • 비트 프레임Bit Frame
    • 프레임의 시작과 끝 위치에 플래그라는 특수하게 정의된 비트 패턴(01111110)을 사용해 프레임 단위를 구분
  • 비트 프레임의 구조
    • 데이터 전송 전에 프레임의 좌우에 플래그를 추가, 수신 호스트는 이 플래그를 제거해 전송 데이터와 필요한 제어 정보를 상위 계층 전달
      비트 프레임 구조
  • 비트 스터핑Bit Stuffing 알고리즘
    • 전송 데이터에 플래그 패턴이 포함되면 혼선이 발생
    • 송신 호스트 : 전송 데이터가 1이 연속해서 5번 발생하면 강제로 0을 추가
    • 수신 호스트 : 송신 과정에 추가된 0을 제거하여 원래의 데이터를 상위 계층 전달
      비트 스터핑 구조

다항 코드

개념

  • 다항코드는 CRC로 알려졌는데 현재의 통신 프로토콜에서 가장 많이 사용하는 오류 검출 방법
  • 다항코드는 다항식을 형태를 기반으로 오류를 검출하는 방법

오류를 극복하는 방법

  • 전송 프레임에 오류 검출 코드를 넣어 수신 호스트가 전송 과정의 오류를 검출
  • 순방향 오류 복구FEC, Forward Error Correction : 오류 복구 코드를 사용해 수신 호스트가 오류 복구 기능을 수행하는 방식

오류 검출

  • 역방향 오류 복구BEC, Backward Error Correction (ARQAutomatic Repeat reQuest 방식)
    • 재전송 방식을 이용해 오류 복구(네트워크에서 일반적으로 사용)
  • 패리티Parity 비트
    • 1 바이트(8비트) = 7 비트 ASCII 코드 + 1 패리티 비트-
    • 짝수 패리티 : 데이터 끝에 패리티 비트를 추가해 전체 1의 개수를 짝수로 만듦
    • 홀수 패리티 : 1의 개수를 홀수로 만드는 것
    • 송신 호스트와 수신 호스트는 동일한 패리티 방식을 사용해야 함
      parity bit 구조

다항 코드 Polynomial Code

  • 블록 검사
    • 짝수개의 비트가 깨지는 오류를 검출
    • 수평, 수직 방향 모두에 패리티 비트를 지정
      블록 검사

생성 다항식(CRCCyclic Redundancy Code)

  • CRC 처리과정: 송신측
  1. 임의의 CRC 발생코드를 선정
  2. CRC 발생코드의 최고차 차수만큼 원래 데이터의 뒤에 ‘0’을 붙임
  3. 확장데이터(=원래 데이터+데이터 뒤에 붙인 ‘0’)을 modul0-2 연산을 사용-CRC 발생코드로 나눔
  4. 나머지가 ‘0’이면 확장 데이터를 그대로 전송함
  5. 나머지가 ‘0’이 아니면 원래데이터에 나머지를 붙여 전송함
  • CRC 처리과정: 송신측
  1. 수신 장치는 수신된 코드를 동일한 CRC 발생코드로 나눔
  2. 나머지가 ‘0’이면 오류가 발생하지 않은 것이고, 만약 나머지가 ‘0’이 아니면 전송과정에서 오류가 발생한 것으로 판단
  • CRC 처리과정에서 MODULO-2 연산사용
  • 이때 mod-2 연산은 EX-OR 연산
  • CRC 예
    • CRC 발생코드를 P(X)를 아래와 같이 설정
  • CRC 발생코드가 ‘1101’처럼 주어지고 주어지기도 하고 좌측처럼 다항식으로 주어지기도 함
  • 만약 다항식으로 주어지면 위의 예처럼 2진 코드로 변환해야 함
  • 전송할 데이터가 G(X)가 ‘110010’이라고 하면, CRC 발생코드의 최고차 차수가 3이므로 G(x) 뒤에 ‘0’을 3개 붙여서 확장 데이터 ‘110010000’을 만듦
  • 이제 확장 데이터를 CRC 발생코드 ‘1101’로 나누는데 이때 앞에서 말한 modulo-2연산을 이용함
  • 나머지 비트수는 CRC 발생코드의 최고차 차스와 같음
  • 정보(데이터) ‘110010’에 CRC ‘100’을 붙인 ‘110010100’ 이 전송되는 전송코드임
  • 이제 수신측에서 전송 데이터 오류가 있는 지 알아보면 수신된 코드를 동일한 CRC 발생코드로 나눔
  • 나머지가 ’0‘입니다. 즉, 오류가 없습니다.

이미지 출처- 배움사이버교육 (신은섭 교수)

profile
느낀대로 적자

0개의 댓글