pingu-.log
로그인
pingu-.log
로그인
데이터 전송 코드 시스템
형진
·
2022년 5월 6일
팔로우
0
네트워크
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 처리과정: 송신측
임의의 CRC 발생코드를 선정
CRC 발생코드의 최고차 차수만큼 원래 데이터의 뒤에 ‘0’을 붙임
확장데이터(=원래 데이터+데이터 뒤에 붙인 ‘0’)을 modul0-2 연산을 사용-CRC 발생코드로 나눔
나머지가 ‘0’이면 확장 데이터를 그대로 전송함
나머지가 ‘0’이 아니면 원래데이터에 나머지를 붙여 전송함
CRC 처리과정: 송신측
수신 장치는 수신된 코드를 동일한 CRC 발생코드로 나눔
나머지가 ‘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‘입니다. 즉, 오류가 없습니다.
이미지 출처- 배움사이버교육 (신은섭 교수)
형진
느낀대로 적자
팔로우
이전 포스트
http vs https
0개의 댓글
댓글 작성