본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH6. 데이터 링크 계층

반응형
SMALL

01. 데이터 링크 계층 프로토콜의 기초

연결 구성도

점대점

  • 두 호스트가 통신하려면 일대일(1:1) 형식의 점대점 방식으로 연결해야 한다.
  • 송신 호스트에서 전송한 프레임은 점대점으로 직접 연결된 수신 호스트에 라이팅 과정 없이 전달된다.
  • 직접 연결 구조에서 둘 사이의 전송 오류를 감지하고, 이를 복구하는 기능을 지원한다.
  • 전송 선로에 2개의 호스트만 연결되므로 호스트를 구분하기 위한 주소 개념이 필요없다.

 

멀티 드롭

  • 하나의 호스트가 다수의 호스트와 연결된 비대칭 형태이다.
  • 하나의 물리 매체를 여러 호스트가 공유하므로, 임의의 호스트에서 전송한 프레임은 물리적으로 다른 호스트에 전달된다.
  • 여러 수신 호스트 중에서 프레임의 목적지 호스트를 지칭하기 위한 주소 개념이 필요하다.

 

1. 프레임의 종류

데이터 링크 계층에서 전송 오류를 해결하는 과정에서 다음과 같은 프레임을 사용한다.

 

 

정보 프레임(Information Frame)

  • 상위 계층이 전송을 요구한 데이터를 수신 호스트에 전송하는 용도로 사용한다.
  • 상위 계층에서 보낸 데이터와 함께 프레임의 순서 번호, 송수신 호스트의 주소 정보를 포함한다.
    • 순서 번호: 각 정보 프레임에 부여되는 고유의 일련번호로, 수신 호스트가 중복 프레임을 구분할 수 있도록 한다.

 

긍정 응답 프레임(Positivie Acknowledge Frame)

  • 프레임 변형 오류가 발생하지 않으면 송신 호스트에 해당 프레임을 올바르게 수신했다는 의미로 회신하는 ACK 프레임이다.
  • 긍정 응답 프레임을 수신한 송신 호스트는 데이터가 제대로 도착했음을 확인할 수 있다.

 

부정 응답 프레임(Negative Acknowledge Frame)

  • 프레임 변형 오류가 발생했을 때 수신 호스트가 송신 호스트에 회신하는 ACK 프레임이다.
  • 송신 호스트는 오류 발생을 인지하고 원래의 정보 프레임을 재전송한다. (동일한 순서 번호로 재전송)

 


2. 오류, 흐름 제어가 없는 프로토콜

단순 프로토콜

  • 이상적인 환경의 데이터 전송 구조이다.
    • 단방향 통신
    • 전송 오류가 없는 물리 매체
    • 무한 개의 수신 버퍼
  • 송신 호스트가 전송한 프레임은 수신 호스트에 항상 안전하게 도착하므로 송신 호스트가 프레임을 원하는 만큼 계속 전송할 수 있다.
  • 송수신 호스트 사이의 흐름 제어 기능이 필요 없어 상위 계층이 요청한 데이터를 수신 호스트에 송신하는 과정만 필요하다.

 


3. 오류 제어가 없는 프로토콜

정지-대기 프로토콜 1

  • 수신 호스트의 버퍼 개수가 유한한 환경의 구조이다.
    • 단방향 통신
    • 전송 오류가 없는 물리 매체
  • 수신 호스트의 버퍼가 유한 개로 제한되는 환경에서 송신 호스트가 너무 빨리 정보 프레임을 전송하면 버퍼 부족으로 프레임 분실 오류가 발생할 수 있다. 이를 방지하기 위해 흐름 제어 기능을 제공하여 송신 호스트의 전송 속도를 조절해야 한다.
  • 수신 호스트가 이전 프레임의 수신을 완료한 후 다음 프레임을 전송하도록 송신 호스트에 지시한다. 이때 ACK 프레임을 사용한다.
  • 각 정보 프레임에 대하여 수신 호스트가 회신하는 ACK 프레임이 도착해야 다음 프레임을 전송할 수 있는 프로토콜 방식을 정지-대기 방식이라 한다. (전송 효율이 매우 떨어지므로 일반 네트워크 환경에서 사용하지 않음)

 


4. 단방향 프로토콜

  • 단방향 통신: 데이터는 송신 호스트에서 수신 호스트로만 전달되는 환경 구조이다.
    • 오류 제어와 흐름 제어 기능을 지원한다.
  • 프레임 분실이 발생하면 수신 호스트는 정보 프레임이 도착하길 무한정 기다린다. 결과적으로 수신 호스트가 ACK 프레임을 회신할 수 없으므로 송신 호스트도 ACK 프레임의 도착을 무한정 기다린다. 이런 현상을 방지하기 위해 타임아웃 기능을 사용한다.
    • 프레임 전송 후 특정 시간까지 ACK/NAK 프레임을 회신받지 못하면 송신 호스트는 프레임 분실이 발생한 것으로 간주한다.  이때 분실된 프레임을 재전송한다.

 

4.1 NAK가 없는 경우

정지-대기 프로토콜2: NAK가 없는 경우

  • NAK 프레임이 정의되지 않은 프로토콜에서 오류를 복구하는 방법이다.
  • (a) 송신 호스트가 전송한 정보 프레임을 분실한 경우
    • 송수신 호스트 모두 상대방의 행동을 기다리면서 프로토콜의 진행을 멈추는 현상이 발생할 수 있다.
    • 송신 호스트가 정보 프레임을 전송한 후에 제한 시간을 설정하여 타이머를 작동시킨다. 임의의 시간까지 ACK 프레임이 도착되지 않으면 시간 초과에 따른 타이머 동작으로 정보 프레임 I(i)를 재전송한다.
  • (b) ACK 프레임이 회신되는 과정에서 송신 호스트가 정보 프레임이 올바르게 전달되었다는 사실을 모르는 경우
    • 송신 호스트 입장에서 (a) 상황과 동일하므로 타이머 동작에 의한 재전송 과정이 필요하다.

 

프레임 변형 오류

  • NAK 프레임이 정의되지 않아 수신 호스트가 프레임 변형 오류에 응답할 방법이 없다.
  • 송신 호스트의 타임아웃 기능에 의해 오류 복구 기능이 진행되어야 한다.

 

4.2 NAK가 있는 경우

정지-대기 프로토콜 3: NAK가 있는 경우

  • 데이터 변형 시 NAK 프레임을 이용해 프레임 변형 사실을 송신 호스트에 통보한다.
  • 결론적으로 2가지 원인이 발생했을 때 송신 호스트의 재전송 기능으로 오류 복구가 이루어진다.
    • 정보 프레임에 대한 수신 호스트의 응답이 없을 때 송신 호스트의 타임아웃 기능에 의해 복구가 이루어지는 경우
    • 수신 호스트가 회신한 부정 응답 프레임(NAK)에 의해 복구가 이루어지는 경우

 


02. 슬라이딩 윈도우 프로토콜

  • 두 호스트 간의 프레임 전송을 위한 일반적인 통신 프로토콜로, 오류 제어와 흐름 제어 기능을 함께 지원한다.
  • 다음과 같은 기본 절차를 따른다.
    1. 송신 호스트는 프레임의 순서 번호, 오류 검출 코드 등을 프레임에 표기 후 정해진 순서 번호에 따라 순차적으로 송신한다.
    2. 프레임을 받은 수신 호스트는 해당 프레임의 순서 번호에 근거하여 송신 호스트에 응답 프레임을 회신해야 한다. (PAK에 기록된 순서 번호 이전까지의 프레임은 모두 제대로 수신함, 위 그림에서는 이해를 위해 i+1가 아닌 i로 ACK 번호 기재)
    3. 수신 호스트는 수신한 정보 프레임을 보관하기 위해 내부 버퍼인 수신 윈도우를 유지할 수 있다.
      • 선택적 재전송: 수신 윈도우의 크기 = 송신 윈도우의 크기
      • 고백 N 방식: 수신 윈도우의 크기 = 1

 

1. 흐름 제어

수신 호스트가 연속으로 수신할 수 있는 정보 프레임의 개수를 윈도우의 크기로 지정함으로써, 송신 호스트의 프레임 전송 속도를 제어한다.

 

1.1 순서 번호

  • 정보 프레임의 내용에는 프레임별로 고유하게 부여되는 순서 번호라는 일련번호가 부여된다.
  • 번호는 0부터 임의의 최댓값까지 정의되고, 최댓값 이후는 다시 0번으로 되돌아오는 순환 방식으로 할당된다.
    • 현재 처리되고 있는 서로 다른 프레임에 같은 순서 번호를 부여하지 않도록 해야 한다.
    • 기본적으로 순서 번호의 최댓값이 송신 윈도우의 크기보다는 커야 한다.

 

1.2 윈도우 크기

  • 임의의 시점에서 송신 호스트가 수신 호스트로부터 긍정 응답 프레임을 받지 않고도 전송할 수 있는 정보 프레임의 최대 개수
  • 긍정 응답 프레임이 회신되고 오류 없이 수신 호스트에 전달되었음을 확인함에 따라 윈도우에 새로 추가될 정보 프레임의 순서 번호도 순차적으로 높은 번호로 이동한다.

 

슬라이딩 윈도우 프로토콜의 동작 과정 1(송신 윈도우 크기=3)

  • 송신 윈도우의 최대 크기를 3으로 가정했을 때 슬라이딩 윈도우 프로토콜의 동작 과정이다.
  • (a) 0, 1, 2번 3개의 정보 프레임 전송 후, 아직 해당 정보 프레임에 대한 ACK 프레임을 받지 못한 경우
    • 0번 프레임에 대한 긍정 응답의 처리 완료 후 3번 프레임을 전송할 수 있다.
  • (b) 0번에 대한 ACK 프레임 회신 후 3번 프레임 전송(c) 가능
  • (d) 1번에 대한 ACK 프레임 회신 후 4번 프레임 전송(e) 가능
  • (f) 2, 3번에 대한 ACK 프레임 회신 (5, 6번 프레임 전송 가능)
  • 순서 번호의 최댓값을 9라고 가정하면, 9번 정보 프레임 전송 후 전송되는 프레임의 순서 번호는 0이 된다.

 

슬라이딩 윈도우 프로토콜의 동작 과정 2(송신 윈도우 크기=3)

  • 위 과정을 다르게 표현한 것이다.
  • 송신 호스트와 수신 호스트가 정보/응답 프레임을 전송하는 과정이 더 직관적이다.

 


2. 연속형 전송

  • 정지-대기 방식의 프로토콜은 송신 윈도우의 크기가 1인 특수한 경우이다. 이때 송수신 호스트의 거리 차로 인해 프레임 전송 시간이 상대적으로 오래 걸리는 환경이면 효율은 극단적으로 떨어진다.
    • 이를 해결하기 위해 윈도우 크기를 늘려 ACK 프레임을 받지 않고도 여러 정보 프레임을 연속으로 전송할 수 있어야 한다.
    • 연속형 전송
  • 연속형 전송 방식의 오류를 해결하는 방법에는 고백 N 방식과 선택적 재전송 방식이 있다.
    • 전송한 여러 정보 프레임 일부에 오류가 발생할 수 있다.
    • Ex. 10~17번 정보 프레임 중 12번만 오류가 발생하면 12번에 대한 오류 복구 과정만 수행하면 된다.

 

2.1 고백 N(Go-Back-N) 방식

오류 복구 과정에서 오류가 발생한 12번 프레임을 포함해 이후에 전송된 모든 정보 프레임을 재전송하는 방식

 

고백 N

  • 정상적으로 수신된 프레임까지 재전송한다는 문제가 있다.
  • 수신 호스트가 임의의 앞선 순서 번호를 갖는 정보 프레임이 처리될 때까지 다음 정보 프레임을 모두 버리는 방식으로 처리된다.
    • 수신 윈도우에는 현재 처리 중인 프레임 1개만 존재하므로 수신 윈도우의 크기는 1이라고 할 수 있다.

 

2.2 선택적 재전송 방식

오류가 발생한 프레임만 선택적으로 복구하는 방식

 

선택적 재전송

  • 부정 응답 프레임을 사용해 오류가 발생한 정보 프레임을 처리하는 경우이다.
  • NAK(12) 프레임을 전송한 후에는 I(12)번 프레임 처리를 완료할 때까지 다음 정보 프레임에 대한 긍정 응답 프레임을 전송하지 않도록 한다.
  • 앞선 정보 프레임에 대한 처리가 이루어지지 않았어도 오류 없이 수신된 모든 정보 프레임을 수신 윈도우에 보관하기 때문에 수신 윈도우의 크기는 송신 윈도우의 크기와 같다.
  • 프레임의 도착 순서가 송신 순서와 일치하지 않을 수 있다.

 


3. 피기배킹

  • 정보 프레임을 전송하면서 응답 기능까지 함께 수행하면, 응답 프레임의 전송 횟수를 줄여 전송 효율을 높일 수 있다.
  • 전송할 데이터와 해당 데이터의 순서 번호, 현재까지 수신한 프레임의 순서 번호까지 포함하여 정보 프레임의 전송과 응답 프레임의 회신을 한 번에 처리할 수 있다.

 

피기배킹을 사용하지 않는 경우

  • 왼쪽에서 0, 1번 정보 프레임을 전송하고, 오른쪽에서 0, 1번 순서대로 정보 프레임을 전송한다.
  • 개별 정보 프레임에 대해 긍정/부정 응답 프레임이 순서 번호와 함께 별도로 처리된다.

 

피기배킹을 사용하는 경우

  • 정보 프레임의 표기 방식은 I(i, j)로 재정의되었다.
    • i는 자신이 전송하는 데이터의 순서 번호를, j는 제대로 수신한 프레임의 순서 번호를 의미한다.
  • 응답 프레임을 전송할 시점에서 전송할 정보 프레임이 있으면 피기배킹 기능을 사용할 수 있지만, 정보 프레임이 없으면 응답 프레임만 전송해야 한다.

 


03. HDLC 프로토콜

컴퓨터가 일대일 혹은 일대다로 연결된 환경에서 데이터의 송수신 기능을 제공한다.

 

1. 프레임 구조

HDLC 프레임

  • Address(주소): 일대다로 연결된 환경에서 특정 호스트를 구분하여 지칭하는 목적으로 사용한다.
  • Control(제어): 프레임의 종류를 구분한다.
  • Data(데이터): 가변 크기의 전송 데이터가 포함되는데, 상위 계층인 네트워크 계층에서 보내진 패킷이 캡슐화된다.
  • Checksum(체크섬): CRC-CCITT를 생성 다항식으로 하는 오류 검출 용도로 사용된다.

 


2. 프레임 종류

2.1 정보 프레임

네트워크 계층의 데이터 전송을 위해 정의된다.

  • Seq: 정보 프레임의 송신용 순서 번호로 사용한다.
  • Next: 피기배킹을 이용한 응답 기능으로 사용한다.
  • P/F: 값이 1로 지정되었을 경우에 한하여 Poll 혹은 Final의 의미를 갖는다.

 

2.2 감독 프레임

정보 프레임에 대한 응답 기능을 수행하는 프레임이다.

 

감독 프레임

  • Type0: RR로 정의된 긍정 응답 프레임
  • Type1: REJ로 정의된 부정 응답 프레임
  • Type2: RNR로 정의된 응답 프레임으로, 흐름 제어 기능까지 제공한다.
  • Type3: SREJ로 정의된 프레임으로, 선택적 재전송 방식에서 부정 응답 기능을 지원한다.

 

2.3 비번호 프레임

순서 번호가 없는 프레임을 정의한다. 주로 연결 제어 등의 용도로 사용하지만, 비연결형 데이터 전송을 위해 사용하기도 한다.

  • SABM: 비동기 균형 모드의 연결 설정을 요구한다.
  • SNRM: 정규 응답 모드의 연결 설정을 요구한다.
  • SARM: 비동기 응답 모드의 연결 설정을 요구한다.
  • DISC: 연결 설정 해제를 요구한다.
  • RSET: 비정상적인 프로토콜의 동작에 따른 리셋 기능을 수행한다.
  • FRMR: 비정상적인 프레임의 수신을 거부한다.
  • UA: 비번호 프레임에 대한 응답 기능을 수행한다.

 

연결 모드 설명
정규 응답 불균형 모드를 의미하기 때문에 호스트 하나는 주국으로 동작하고, 다른 하나는 종국으로 동작한다. SNRM을 이용하여 연결 설정을 요구하며, 종국에서 데이터를 전송하려면 반드시 주국의 허락을 받아야 한다.
비동기 균형 2개의 호스트가 동일한 능력을 갖는 혼합국으로 동작하며, 양쪽에서 명령과 응답을 모두 전송할 수 있다. 따라서 둘 중 임의의 호스트에서 SABM을 이용한 연결 설정 요구를 수행할 수 있다.
비동기 응답 불균형 모드이나 종국이 주국의 허락 없이도 데이터를 전송할 수 있는 권한을 갖는다. 즉, 주국의 허가가 없어도 종국에서 먼저 SARM 응답을 보낼 수 있다.

3가지 연결 모드

 


3. LAP 프로토콜

비동기 응답 모드인 ARM으로 동작하는 프로토콜

 

(a) 연결 설정 1 / LAP에서의 연결 설정

  • 연결 설정: 주국에서 전송된 SARM 명령에 대하여 종국에서 UA 응답을 전송함으로써 완료된다.

 

(b) 연결 설정 2 / LAP에서의 연결 설정

  • LAP은 비동기 응답 모드로 동작하기 때문에 종국에서 주국으로 SARM 응답을 전송하여 연결 설정을 요구할 수 있다.
  • 종국으로부터 SARM 응답을 받은 주국은 SARM 명령을 전송하고, 최종적으로 종국에서 UA 응답을 전송함으로써 연결 설정이 완료된다.
  • 연결을 해제할 경우에도 주국으로부터 DISC 명령이 발생하면 종국에서 UA 응답을 전송하는 것으로 해제가 완료된다.

 


4. LAPB 프로토콜

양쪽 호스트가 혼합국으로 동작하기 때문에 누구나 먼저 명령을 전송할 수 있다.

 

LAPB에서의 연결 설정

  • 비동기 균형 모드의 연결을 설정하기 위해 오른쪽 호스트가 왼쪽 호스트에 SABM 명령을 전송한 경우이다.
  • 왼쪽 호스트에서는 UA 응답을 전송함으로써 계층 2의 연결 설정이 완료된다.
  • 연결 해제의 경우에도 임의의 호스트에서 DISC 명령을 전송하고, 이를 수신한 측에서 UA 응답을 함으로써 완료된다.

 


References

반응형
LIST