본문 바로가기
망 (Network)

[네트워크] 데이터 링크 계층의 작업

728x90

프레임 : 데이터 링크 계층은 네트워크 계층이 보내온 패킷에 데이터 링크 계층이 사용하는 헤더를 붙여 만들어진 데이터 단위
비동기식 전송 : 예고 없이 데이터를 보내는 방식
동기식 전송 : 데이터를 전송한다고 먼저 알려준 후 프레임을 보내는 방식, 현재 사용하고 있는 방식


 
플래그 : 동기식 전송에서 데이터를 보내기 전에 통신 시작을 알리는 신호, 시작할 때와 마친가지로 프레임이 언제 끝날지도 알려주어야 함, 앞에 붙이는 플래그 = 프리앰블, 뒤에 붙이는 플래그 = 포스트앰블

이스케이프 문자(ESC) : 프레임 내에 플래그와 같은 패턴을 가진 데이터가 존재하는 경우 문제가 발생할 수 있으므로 삽입하는 것


문자 프레임 : 문자 프레임에서는 데이터를 아스키 코드 형태로 전송

  • 문자 프레임에서 프리앰블은 DLE (Data Link Escape) STX를 붙여서 사용하고 포스트앰블로 DLE ETX를 사용
  • STX (Start of Text) 는 전송 텍스트의 시작을 나타내는 제어 문자이며, ETX (End od Text) 는 전송 텍스트의 끝을 나타내는 제어 문자
  • 문자 프레임은 현재 거의 사용하지 않음

문자 스터핑 : 데이터에 DLE ETX가 나타나는 경우에는 DLE ETX 앞에 DLE를 하나 더 붙여서 전송

(a) 송신 호스트 : 데이터에 DLE 문자가 있으면 강제로 DLE 문자 추가
(b) 수신 호스트 : 데이터에 DLE 문자가 두 번 연속 있으면 DLE 문자 삭제
 


 
비트 프레임 : 비트 프레임에서는 프리앰블과 포스트앰블에 비트 패턴을 사용 -> 프리앰블과 포스트앰블 패턴은 똑같이 01111110 임. 0이 나온 후 1이 6개에 연달아 나타난 뒤, 맨 뒤에 0이 붙어서 총 8비트

  • 데이터에 플래그와 같은 패턴, 즉 01111110이 나타나면 문제가 발생
  • 대부분은 비트 프레임 방식을 사용

비트 스터핑 : 연달아 나타나는 1의 다섯 번째 다음에 0을 하나 삽입

송신 호스트 : 데이터에 1이 연속해서 5번 발생하면 강제로 0을 추가
수신 호스트 : 데이터에 1이 연속해서 5번 발생하면 이어진 0을 제거


슬라이딩 원도우 프로토콜

에러가 있는 네트워크에서 데이터를 보내는 것은 마치 높은 벽 뒤로 물건을 던지는 것과 같음 -> 프레임을 보낸 쪽은 제대로 받았는지 확인 할 수 없음
 
액(ACK) : 물건을 받을 때마다 액 소리를 보내면 보내는 쪽에서 액 소리를 듣고 다음 프레임을 보냄
타임아웃 : 프레임을 받은 후 ACK을 보냈는데 중간에 사라지면 무작정 기다리기만 함
프레임 일렬번호 및 ACK 일렬번호 : 일렬번호를 붙이면 보내는 프레임이 몇 번째 프레임인지, 몇 번째 ACK인지 정확하게 알게되어서 프레임 또는 ACK가 사라지거나 중복되는 경우에 이를 확인 할 수 있음

데이터 전송 필수 요소 = ACK 사용 + 타임아웃 사용 + 프레임 일렬번호 사용 + ACK 일변번호 사용

 
피기 백킹 : 데이터도 없이 ACK만 보내는 것은 낭비이기에 기존의 메시지에 ACK를 얹어서 보내는 방식


 
Stop-and-Wait : 데이터를 보낸 후 멈추고(stop), ACK를 기다린다(wait), 매우 느림
슬라이딩 윈도우 프로토콜(연속전송 프로토콜) : ACK 없이 한꺼번에 많은 양의 데이터를 보내는 방식, 전송속도 올라감

 
 
윈도우 크기 : 슬라이딩 윈도우 프로토콜에서는 보내는 쪽과 받는 쪽에서 ACK없이 보낼 수 있는 프레임의 개수

윈도우 크기가 4라는 의미는 보내는 쪽에서 ACK 없이도 4개의 프레임을 연속적으로 보낼 수 있 다는 의미
받는 쪽에서는 마지막 4번째의 ACK만 보냄 -> ACK를 받으면 다음 번 4개의 프레임을 전송


 
Go-Back-N ARQ : 슬라이딩 윈도우 프로토콜에서 수신 B는 받지 못한 프레임에 대해 부정응답(NAK) 발송

2번 NACK을 받은 경우, 2번 프레임부터 시작하여 2, 3, 4, 5의 4개의 프레임을 다시 보냄
 
Selective Repeat ARQ : 전체 N개의 프레임을 전달하는 대신 손상된 프레임만 전송하는 방식, 회로도 복잡

NACK을 받은 2번 프레임만 다시 전송 -> 2, 4, 5, 6의 4개의 프레 임이 전송
수신 B가 버퍼에 프레임 3번을 저장했다가 프레임 2 번을 받은 후 프레임을 순서대로 다시 조합해야 함
 
Adaptive ARQ : 네트워크가 안정적인 경우 프레임의 크기를 늘리고, 네트워크가 불안정하면 프레임의 크기를 줄임, 회로가 복잡하기 때문에 잘 사용하지 않음
 

ARQ특징
Stop and Wait ARQwindow size = 1, 안정적이지만 느리다
Go-Back N ARQ연속 전송 방식, 작업이 단순하지만 패킷이 중복되는 단점이 있다
Selective Repeat ARQ연속 전송 방식, 받는 쪽이 재조합을 해야 하고 버퍼가 커야 한다
Adaptive ARQ채널의 상태에 따라 프레임의 크기를 조정하는 방식이다

 


오류 처리 코드

에러 탐색 코드 : 에러를 찾을 때 사용하는 코드 ex) 패리트, CRC 코드, 검사합
에러 보정 코드 : 에러를 찾을 뿐 아니라 원래의 값으로 보정해주는 코드, 오버헤드가 큼 ex) 허밍 코드
 
패리티 비트 : 가장 간단한 탐색 코드, 간단하지만 연속에러에 취약, 에러가 짝수 개 발생하면 에러 찾지 못함
보내려는 데이터에 추가로 1비트를 만듬, 추가된 비트에 1이나 0을 넣어 전체 1의 개수가 짝수(짝수 패리트 비트) 혹은 홀수(홀수 패리트 비트)가 되도록 만드는 방식

여러 개의 에러를 찾기 위해 패리트 비트를 수직, 수평으로 배열할 수 있지만 에러에 취약함
추가되는 1비트당 1개의 에러를 찾을 수 있음

 
CRC(순환 중복 검사) 코드 : 적은 오버헤드로 많은 에러를 찾을 수 있음, 가장 많이 사용되는 에러 검출 코드

  • 보내려는 쪽과 받는 쪽에서 똑같은 CRC 코드 값을 알고 있음
  • 보내는 쪽에서는 데이터를 CRC 코드 값으로 나누었을 때 0이 되도록 숫자를 추가하여 보냄
  • 보내려는 데이터는 12인 경우, CRC 계산을 위해 한 자리수가 추가되기 때문에 보내려는 데이터는 120 ~ 129 사이의 값 -> 120에 6을 더한 126 전송
  • CRC 코드가 9인 경우, 9로 나누어 나머지가 0이 아닌 모든 수가 에러임으로 찾을 수 있는 에러의 개수는 8개
  • CRC 코드에서 8비트로 찾을 수 있는 에러의 개수는 2⁸ - 1인 255개
  • 16 비트를 추가하는 경우, 패리티 비트는 16개를 찾을 수 있지만, CRC의 경우 2¹⁶ - 1개인 65535개를 찾을 수 있음

 

보내려는 데이터는 1100이고 CRC 코드 값은 1001

나머지 101을 보내려는 1100에 붙여서 보냄
 
전송된 1100101을 CRC 코드 값 1001로 나눔

나눗셈의 결과 000이 나왔음으로 전송된 데이터에 에러가 없음
 

CRC-16의 경우 17개의 비트 패턴이며, CRC-32의 경우 33개의 비트 패턴


검사합(checksum) : 보내려는 데이터를 일정 크기로 자르고 이를 더하여 에러 탐색 코드를 만듬, 변형되어 우연히 합이 같아진 경우는 찾을 수 없음으로 CRC보다 찾을 수 있는 에러양이 적음

 

 

728x90