데이터 전송의 기초(오류 제어, 프레임)

yo·2021년 1월 3일
0

오늘의 주제: 오류제어, 프레임, 다항코드

오류 제어

학습 목표: 데이터 링크 계층의 오류제어와 흐름제어 기능을 이해한다!

복습
데이터 링크 계층은 OSI 7계층 중 2계층에 해당한다.

Node To Node Delivery : 인접한 노드간의 신뢰성 있는 프레임(Frame) 전송을 담당하는 계층

   - 인접 노드간의 통신이며 최종 목적지 노드에 도달하기 위해서는 각각의 노드 간에 프레임에대한 MAC Address로 이루어 진다.

   - 데이터 단위 : 프레임(Frame)

   - 프로토콜 : Ethernet, TokenRing, FDDI, X.25 등
물리적인 링크를 통하여 신뢰성 있는 정보를 전송하는 기능
ㆍ체크섬을 포함한 데이터 블록(Frame)을 전송
ㆍ동기화, 에러제어, 흐름 제어 기능을 담당
물리계층이 데이터를 보내고 받고 하는 기능을 수행하는 반면, 데이터 링크 계층은 그 위에 위치하여
       그러한 기능이 바르게 수행되고 있는지를 확인함

      예 : 두 시스템이 같은 회선을 통해 동시에 데이터를 전송하려고 하면 충돌이 생겨 문제가 발생된다.
            또 정상적인 전송이 이루어졌다 해도 데이터가 정확하게 전달되었는지 확인할 필요가 있음.
            그밖에 전송 도중 전기적 충격 등의 외부 간섭에 의해 데이터의 일부가 변경될 수도 있으므로
            오류 검출의 필요성도 있음.

참고한 자료
http://www.a24s.com/data/jeongbotongsinhakseub/jbts/contents/ch2-4.htm
https://itragdoll.tistory.com/15



수신측에서는 두번째 데이터가 재전송된 데이터인지 다음데이터인지 알 길이 없음.
-> 이를 해결하기 위해 sequence number를 사용한다.

오류 제어 정리(오류 제어를 위한 장치들)

1. 수신 호스트의 응답 프레임

-긍정 응답
-부정 응답

2. 송신 호스트의 타이머 기능

-프레임 분실 오류시 수신 호스트의 인지 불가능
->일정 시간내 긍정 응답이 없으면 timeout 기능을 동작시켜 재전송

3. 순서 번호(sequence number)

-긍정 응답이 분실되는 경우 재전송으로 인한 중복 수신 가능
-> 이를 구별하기 위해 sequence number 기록

흐름 제어

송신측 입장에서 생각해보자.
데이터 하나를 보내고, 이에 대한 응답을 받아야만 다음 데이터를 보내는 방식은 비효율적이다.
흐름제어는 앞서 보낸 데이터에 대한 응답이 오지 않더라도 데이터를 보낼 수 있는 방식이다.

여기서 중요한 건 데이터 전송의 속도이다. 수신측이 감당할 수 있는 속도보다 빠르게 주면 데이터 유실이 발생된다.
수신 호스트 입장에서는, 바로 처리가 어려울 경우 buffer에 저장한다.
이마저도 더이상 공간이 없다면 데이터의 손실, 재전송으로 이어진다.
-흐름제어가 없는 경우 데이터의 손실, 재전송으로 이어진다.

흐름제어의 기본 원리

-다음에 수신할 프레임의 전송 시점을 송신 호스트에서 통지하는 방식
-응답을 받지 않고도 전송할 수 있는 데이터의 양 통보
-대표적인 방식: sliding window(뒤에서 따로 다룬다고 합니다).

프레임

학습 목표

-문자 프레임과 비트 프레임 구조의 이해

데이터 링크 계층 기능

프레임 얘기 전에 데이터 링크 계층을 정리하고 가야한다.

프레임 단위로 나누어 처리

데이터 링크는 프레임 단위로 처리한다. 이 프레임 안에는
-전송 데이터
-오류 확인을 위한 체크섬(checksum)
-송수신호스트 주소(하드웨어 주소, 이더넷이라면 이더넷 주소, 토큰링이라면 관련 정보 등)
-기타 프로토콜에서 사용되는 제어코드 같은 정보
들이 포함되어 있다.

프레임 구분

프레임은 내부 정보를 어떻게 표현하냐에 따라 '문자 프레임'과 '비트 프레임'으로 나뉜다.

문자 프레임

비트 프레임

-문자 프레임은 '문자'로 이루어져 있기 때문에 8비트(=1바이트) 단위로 이루어진 반면, 비트 프레임은 아무 비트나 구성될 수 있다. 반드시 8로 나누어떨어는지가 문자 프레임과 비트 프레임의 차이를 말해줄 수 있다.
-flag : 01111110

다항코드

학습 목표

오류 검출코드의 종류와 원리 이해

정보가 중간에 변형되지 않고 잘 도착했는지 어떻게 검증할 수 있을까?
두 가지 방법이 있다.

  1. 오류 검출 코드를 넣어 수신호스트가 오류 검출 후 재전송으로 복구하는 방법
    -CRC(Cyclic Redundancy Check)

  2. 오류 복구 코드를 넣어 수신호스트가 오류 검출과 복구를 동시에 수행
    -해밍코드(hamming code)
    -순방향 오류복구(FEC: Forward Error Control)

오류 검출 1

맨 처음 그림을 봅시다.
1바이트 데이터는 현재 짝수다.
만약 짝수 페리티일 경우 이를 완성시키기 위해 마지막 8비트를 0으로 하고,
홀수 패리티 일경우 1을 줘서 홀수를 만든다.

패리티 체크의 약점 복수개의 오류가 발생할 때다. 0이 1로 뒤집히고, 1이 0으로 뒤집힌다.
해서, 블록 검사를 사용해 행열을 모두 검사하는게 블록 검사다.

오류 검출 2

profile
Never stop asking why

0개의 댓글