[Data Communications] Chapter 8 - Data Link Control (DLC)

이한량·2024년 5월 27일
0

Data Communications

목록 보기
9/13
post-thumbnail
  • Data Link Control (DLC) : 데이터 링크 제어(DLC)는 데이터 링크 계층에서 두 인접 노드 간 통신 절차에 대해 정의한다. 이는 링크가 유니캐스트 혹은 브로드캐스트 둘 중 어느 환경이라도 필요하다. DLC에는 Framing, 흐름 및 오류 제어가 포함된다.

Broadcast Link : DLC + MAC(링크 다중 접근에 대한 제어)

Point to Point Link (PTP) : DLC (링크 다중 접근에 대한 제어가 필요 없으므로)

  • Fragmentation : 큰 데이터 블록을 작은 데이터 블록 즉, 프레임으로 분할하는 것.

    • 프레임의 장점

      • 전체 데이터를 한 번에 송신할 수 없는 환경이라면, 데이터를 나눠서 전송하면 된다.

      • 오류 발생 시 전체 프레임을 재전송하는 것보다 일부 프레임을 재전송하는 것이 효율적이다.

  • Framing : 데이터 링크 계층에선 데이터그램을 여러 프레임으로 만드는 방법에 대해 정의한다. 이 과정에서 프레임은 여러 종류가 있으므로, 각 프레임을 구별할 수 있도록 하는 비트를 추가한다.

    • Flag : 프레임의 시작과 끝을 나타내는 필드

    • Header : 소스와 목적지 주소가 포함되는 필드

    • Trailer : 데이터 링크 계층에서 에러 체크를 위한 데이터.

  • Byte Stuffing and unstuffing : 프레임 내에서 각 필드가 서로 혼동되지 않도록 구분하는 바이트를 첨가하거나 추출하는 과정.

    • Byte Stuffing : 프레임 내의 특정 패턴의 바이트가 실제 데이터와 혼동되지 않도록 하기 위해 특수 바이트를 삽입하는 것.

      • 프레임 내의 FLAG, ESC 필드 앞에 추가적으로 ESC(Escape Character) 바이트를 첨가해준다.
    • Byte Unstuffing : 바이트 스터핑의 반대 과정으로, 스터핑된 프레임에서 이스케이프 바이트를 제거하며 원본 데이트를 복원하는 과정.

      • 데이터에서 ESC를 발견하면, ESC를 제거하고, 그 다음 필드에 있는 값을 데이터로 받아들인다.

2. Flow Control

  • Buffer : 각 데이터 링크 계층이 프레임을 보관할 메모리 슬롯이다.

  • Flow Control (흐름 제어) : 수신자의 데이터 처리 속도를 넘어서는 데이터를 송신자가 보낸다면 문제가 발생할 수 있다. 따라서 송신자가 보내는 데이터의 양이나 속도를 조절하는 것을 흐름 제어라고 한다.

    • Producer : 소비자로부터 다음 프레임을 보내달라는 요청을 받았을 때, 데이터를 보낸다.

    • Consumer : 버퍼가 비워져 있어 데이터를 받을 수 있는 상태가 되면, 생산자에게 데이터를 보내라는 신호를 보낸다.

    • Flow Control의 방식에는 크게 4가지가 존재한다.

      • Simple Protocol

      • Stop and Wait Protocol

      • Go Back N Protocol

      • Selective Repeat Protocol

2-1. DLC - Simple Protocol

  • Simple Protocol : 데이터 링크 계층에서 사용되는 가장 기본적인 통신 프로토콜 중 하나이다. 이 프로토콜은 흐름 및 오류 제어 기능이 없다. 즉, 송신자가 네트워크 및 수신자의 상태를 고려하지 않고 데이터 프레임을 연속적으로 보내는 방식이다.

    • Sender : 데이터 프레임을 생성하는 즉시 수신자에게 전송한다.

    • Receiver : 전송받은 프레임을 즉시 처리할 수 있는 능력을 갖고 있다고 가정한다면, 수신하는 프레임으로 인한 과부하는 없다. 하지만 현실에선 불가능하다.

2-2. DLC - Stop and Wait

  • Stop and Wait Protocol : 송신자는 오류 검출을 위한 비트를 첨가하여 생성한 프레임을 전송하고, 수신자로부터 확인 응답(Acknowledgment, ACK)을 받을 때까지 대기한다. 즉, 흐름 제어와 오류 제어 기능을 탑재한다.

    • 송신자 : 한번에 하나의 프레임만을 전송하고, 해당 프레임에 대한 수신자의 확인 응답(ACK)을 기다린다.

    • 수신자 : 프레임을 받고 오류 검출 과정을 거친 뒤, 정상적으로 프레임을 받았다면 송신자에게 ACK 메시지를 보낸다.

    • 프레임이 손상됐거나, ACK가 소실된 경우 등 정상적인 데이터 흐름이 아닐 때 송신자는 무한 대기(Deadlock)에 빠질 수 있다. \rarr 이를 해결하기 위해 Timer를 설정한다.

    • Timer : 송신자가 ACK를 받기 위해 일정 시간동안 대기하다 타임 아웃이 발생하면, 오류가 발생했다고 가정하고 마지막으로 보냈던 프레임을 재전송한다.

    특징

    1). 흐름 제어 및 오류 제어 : 흐름 제어 및 오류 제어 기능을 탑재해 신뢰성 있는 데이터 전송을 보장한다.

    2). 일방 통신 : 송신자는 ACK 메시지를 기다리는 동안 추가적인 데이터를 전송할 수 없다. 즉, 링크 활용도가 매우 낮다.

  • Stop and Wait 예제 1

    bandwidth=1Mbps(M=106)RoundTripTime,RTT=20ms(m=103)DataFrame=1000bits(1106)(20103)=20,000bits링크활용도=100020000=5%\begin{aligned} bandwidth &= 1Mbps (M = 10^6) \\ Round-Trip-Time,\,RTT &= 20ms(m = 10^{-3}) \\ DataFrame &= 1000bits \\ (1 * 10^6) * (20 * 10^{-3}) &= 20,000bits \\ 링크\,활용도 &= \frac{1000}{20000} = 5\% \end{aligned}

위 예제에서, 왕복 시간(RTT)동안 링크는 20,000비트(1Mbps20ms1Mbps * 20ms)를 전송할 수 있지만, 실제로는 한번에 1,000비트만 전송할 수 있다.

  • Stop and Wait 예제 2
    bandwidth=10MbpsRoundTripTime,RTT=100msDataFrame=1,460byte=11,680bitsthrougput=1Packet/RTT=11680100103=116,800bit/s링크활용도=116,800100000001%\begin{aligned} bandwidth &= 10Mbps \\ Round-Trip-Time, RTT &= 100ms \\ DataFrame &= 1,460byte \\ &= 11,680bits \\ througput &= 1Packet/RTT = \frac{11680}{100*10^{-3}} \\ &= 116,800bit/s \\ 링크 활용도 &= \frac{116,800}{10000000} \approx 1\% \end{aligned}

위와 같은 네트워크 환경에서 해당 프로토콜의 처리량은 매 100ms마다 1패킷(1460byte), 즉 초당 10패킷이다. 즉, 네트워크가 제공하는 처리량은 10Mbps인데 반해 처리량은 116kbps에 불과하다.

  • 결론 : 위 두 예제를 통해 알 수 있듯이, Stop and Wait 프로토콜은 데이터 전송 속도가 빠른 링크 혹은 전파 지연 시간이 긴 링크 환경에서 매우 비효율적이라는 것을 보여준다.

2-3. DLC - Go Back N Protocol

  • Go-Back-N Protocol (GBN) : Stop and Wait 프로토콜의 전송 효율성을 향상시키기 위해 설계된 프로토콜. 송신자가 ACK 응답을 기다리는동안 여러 패킷을 전송할 수 있도록 하여, 링크 효율성을 높인다. 즉, 한번에 하나의 패킷만을 전송할 수 있는 Stop and Wait 프로토콜과 달리 GBN 프로토콜은 여러 패킷을 동시에 전송할 수 있기에 전송 효율성을 높일 수 있다.

  • Sliding Window : 송신자는 정해진 윈도우 크기 nn만큼의 패킷을 ACK 수신을 기다리지 않고 보낼 수 있다. 즉, 윈도우라는 것은 내가 ACK를 받지 못하더라도 보낼 수 있는 패킷의 양을 의미한다.

    • 슬라이딩 윈도우를 좀 더 자세히 살펴보면, 파란색으로 칠해져있는 부분이 패킷을 보냈지만 ACK를 받지 못한 부분이다.

    • 나머지 흰색 부분은 데이터 전송 준비가 완료된다면 바로 보낼 수 있는 패킷이다.

    • 만약 ACK 2(2번 패킷을 받을 차례라는 메시지)가 도착한다면, 슬라이딩 윈도우는 오른쪽으로 이동하여 2번 패킷부터 n크기만큼의 패킷을 보낼 수 있다.

  • Flow Diagram

    • 송신자 : 전송 준비가 완료된 패킷을 보낸다. ACK 메시지가 도착하지 않더라도 다음 패킷을 보낼 수 있다. 패킷을 보낼 때 타이머를 세팅하고, Base 패킷과 보낼 패킷 번호가 일치하면, 타이머가 종료된다.

    • 수신자 : 패킷 수신 후, 순서가 맞는 패킷에 대해서만 ACK 응답을 보낸다. ACK 메시지는 다음에 받아야 할 패킷 번호가 담겨 있다.

    • 재전송 : 패킷 손실, 오류 등의 이유로 ACK 메시지가 일정 시간 도착하지 않는다면, Timer에 의해 Time out이 발생한다. 이후 송신자는 ACK 메시지를 받지 못한 패킷부터 시작해 모든 패킷을 재전송한다.

    • 특징

      • 효율성 : 여러 패킷을 동시에 전송할 수 있고, ACK 응답을 기다리는 동안에도 패킷을 전송할 수 있기 때문에 Stop and Wait 프로토콜에 비해 링크 효율성이 크게 증가한다.

      • 복잡성 : 패킷의 순서를 관리하고, 손실된 패킷을 재전송하는 과정이 Stop and Wait 프로토콜에 비해 복잡하다.

      • 대역폭 낭비 : 오류 발생 시, 오류가 감지된 패킷부터 그 이후의 모든 패킷을 재전송해야 하므로 대역폭이 낭비될 수 있다.

  • 예제

    SlidingWindowSize,n=15bandwidth=1MbpsRoundTripTime,RTT=20msDataFrame=1000bits(1106)(20103)=20,000bits링크활용도=10001520000=75%\begin{aligned} Sliding-Window-Size,\,n &= 15 \\ bandwidth &= 1Mbps \\ Round-Trip-Time, RTT &= 20ms \\ DataFrame &= 1000bits \\ (1 * 10^6) * (20 * 10^{-3}) &= 20,000bits \\ 링크\,활용도 &= \frac{1000 * 15}{20000} = 75\% \end{aligned}

    위 예제에서 볼 수 있듯이, 동일한 환경에서 GBN 프로토콜은 Stop and Wait 프로토콜에 비해 슬라이딩 윈도우 사이즈(15배) 만큼의 링크 활용도를 더 얻을 수 있다.

  • 패킷 손실 시 Flow Diagram

    • 패킷 0이 전송되고, ACK 1을 수신받음.

    • 패킷 1의 전송이 손실되고, 패킷 2, 3은 정상적으로 전송 됨.

    • 수신자는 패킷 2, 3을 받지만, 순서가 맞지 않아 폐기함.

    • 수신측에선 계속해서 ACK 1을 보냄. (패킷 1을 받지 못했기 때문에)

    • 송신자는 ACK 1을 계속해서 받지만, 이미 패킷 1을 보낸 상태이므로 ACK를 무시한다.

    • 타임아웃이 발생하고 패킷 1, 2, 3을 재전송한다.

    • ACK 메시지를 받을 때마다 Timer를 재시작하며, 모든 ACK 메시지를 받은 뒤 Timer가 종료된다.

    • Timer : 정상적인 ACK 수신을 못하는 상태로 시간이 경과하면 타임 아웃이 발생한다.

      • Timer의 시간을 너무 크게 설정한 경우 : 오류를 감지하고 데이터 재전송까지의 시간이 너무 오래 걸림.

      • Timer를 시간을 너무 작게 설정한 경우 : ACK 수신을 기다리는 시간이 너무 짧아 데이터 재전송을 과하게 시도함.

2-4. DLC - Selective Repeat Protocol

  • Selective-Repeat Protocol : 이 프로토콜은 패킷 손실이 자주 발생하는 환경에서 GBN의 단점을 개선하였다. 이 프로토콜의 핵심은 유실되거나 손상된 패킷만을 재전송하는 것이다. 이로 인해 불필요한 패킷의 재전송을 줄여 전체적인 네트워크 성능을 개선할 수 있다.

    • Receiver에 SlideWindow와 크기가 같은 Window가 존재해, 순서가 맞지 않는 데이터 패킷도 버퍼에 저장한다.

    • 오류 발생 시 특정 패킷만을 재전송 하기 위해 전송 패킷과 ACK 메시지에 Sequence Number, ACK Number를 실어서 보낸다.

  • Flow Diagram

    • 송신자 : Timer에 정해진 시간만큼 전송을 시작한다. 특정 패킷에 대한 ACK 메시지가 소실되었다면, 타임아웃이 발생한 이후에 해당 패킷만 재전송한다.

    • 수신자 : 받은 패킷의 순서를 추적할 수 있는 비트가 존재하기 때문에, 순서가 맞지 않는 패킷들도 버퍼에 저장한다. 정상적으로 받은 패킷에 대해서만 ACK 메시지를 보낸다.

    • 특징

      • 효율성 : GBN보다 패킷 손실에 대해 내성이 있으므로 네트워크를 효율적으로 사용할 수 있다. 즉, 패킷 손실이 자주 발생하는 환경일수록 성능 향상을 기대할 수 있다.

      • 버퍼 관리 : 수신자는 순서가 맞지 않는 패킷들도 버퍼에 저장하고, 모든 패킷을 정상적으로 수신하면 순서대로 재조립한다.

      • 구현 : GBN에 비해 구현 난이도가 높고, 패킷 관리가 복잡해진다.

  • High-Level Data Link Control (HDLC) : 데이터 링크 계층에서 사용되는 비트 지향 프로토콜이다. HDLC는 데이터를 비트 단위로 처리하기 때문에 데이터가 특정 패턴을 포함하더라도 문제없이 전송할 수 있다.

HDLC는 DLC 안에 포함되는 하위 개념이자 좀 더 구체적인 프로토콜을 정의한다.

  • Transfer Mode : HDLC는 세 가지 주요 운영 모드를 지원한다.

    • Normal Response Mode (NRM) : 주로 Multipoint 링크에서 사용되며, Primary Station이 통신을 제어하고, Secondary Station이 명령에 대해 응답한다.
    • Asynchronous Balanced Mode (ABM) : 양방향 통신을 지원하며, 각 장치는 독립적으로 데이터를 전송하고 수신한다. 주로 Point-to-Point 링크에서 사용함.

    • Asynchronous Response Mode (ARM) : Primary Station이 Secondary Station에게 데이터를 전송하고, Secondary Station은 Primary Station의 명령에 응답할 때만 데이터를 전송할 수 있다. 이는 NRM과 유사하지만, 더 비동기적이다.

  • Framing in HDLC : HDLC는 다양한 운영 모드를 지원하고 제어하기 위해 세 가지 유형의 프레임을 정의한다.

    • I-Frames (정보 프레임) : 데이터를 전송하는 데 사용한다. 정보 데이터를 포함하고, 순서 번호를 제공하여 데이터 패킷의 순서를 지정하며 오류 검사 기능을 제공한다.

    • S-Frames (감독 프레임) : 제어 기능을 수행하며, 정보 프레임의 전송을 관리하는 데 사용된다. 예를 들면, 수신측이 송신측에게 데이터를 더이상 보내지 말라고 요청하거나 특정 프레임의 재전송을 요청하는 식이다.

    • U-Frames (번호 없는 프레임) : 일반적으로 연결 설정, 연결 해제, 오류 관리와 같은 특별한 목적으로 사용하는 프레임이다.

  • Control Field Format : 각 프레임에 존재하는 컨트롤 필드는 프레임의 종류를 정의하는 필드이다. 2bit Data이다.

  • HDLC 예제

    • 연결 설정 및 해제 : Node A는 U-프레임을 사용해 Node B에 연결을 요청(SABM)하고, Node B는 해당 요청에 대한 ACK(UA)를 보낸다. 이 과정을 거치면 두 노드 간 연결이 활성화 되며, 데이터 전송이 시작된다.

    • 데이터 전송 : 해당 예시에서 구체적으로 설명되지 않지만, I-프레임을 사용해 데이터 전송이 이루어지며, 필요에 따라 S-프레임을 사용해 흐름 제어 및 오류 검사를 수행할 것이다.

    • 연결 해제 : 데이터 전송이 끝나면, A는 연결 해제를 위해 U-프레임을 사용해 B에게 연결 해제를 요청(DISC)하고, B는 해당 요청에 대한 ACK(UA)를 보낸다. 이 과정을 거치면 두 노드 간 연결이 해제된다.

    • SABM 프레임은 연결을 시작하고자 할 때, DISC 프레임은 연결을 해제하고자 할 때 사용한다. 각 요청에 대한 UA 프레임은 ACK 응답을 나타낸다. 이 과정을 통해 각 노드는 현재 상태를 명확하게 인지하고 통신을 제어한다.

  • Piggybacking : 데이터 프레임과 함께 ACK 메시지를 전송하는 방식이다. 즉, 순서 번호와 ACK 번호를 함께 프레임에 담아 보낸다. 에러가 발생했을 때는 NAK 메시지를 전송하여 특정 프레임의 재전송을 요청한다.

    • 송신자가 데이터 프레임을 전송할 때, 이전에 수신한 데이터에 대한 ACK 정보를 동일한 프레임에 포함시켜 전송한다. 이는 데이터와 수신 확인을 동시에 처리할 수 있도록 돕는다.

    • 에러 처리 : 수신자가 에러가 발생했음을 인지한 경우, 해당 프레임에 대한 NAK(부정 수신 확인)을 송신자에게 전송한다. 혹은 수신자가 에러 발생 프레임의 순번을 건너뛰고 ACK를 전송하여 송신자가 이를 감지하고 해당 프레임을 재전송하도록 한다.

    • 특징

      • Piggybacking은 양방향 통신에서 가장 효과적으로 작동한다.

      • 효율성 증가 : 데이터와 수신 확인을 한번에 처리하기 때문에 링크의 효율성이 높다.

      • 지연 감소 : 별도의 수신 확인 프레임을 기다릴 필요가 없어 통신 지연이 감소한다.

      • 네트워크 부하 감소 : 수신 확인을 위한 추가적인 프레임 전송이 없기 때문에, 네트워크의 부하를 줄일 수 있다.

3-1. HDLC - PPP

  • Point-to-Point Protocol (PPP) : Point-to-Point 네트워크 환경에서 데이터 통신을 관리하고 제어하기 위한 데이터 링크 계층의 프로토콜이다.

    • 프레임

      • Address (1byte) : Point-to-Point 통신에서 상대방의 Address는 의미가 없기 때문에 항상 1로 채워져 있다.

      • Control (1byte) : 컨트롤 필드 또한 PPP에선 의미가 없는 필드이다. 따라서 상수로 값이 정해져 있다.

      • Protocol (2byte) : 해당 필드에 정의되어 있는 값을 통해 특정 프로토콜을 수행한다.

  • PPP의 세 가지 주요 프로토콜

    • Link Control Protocol (LCP, 링크 제어 프로토콜) : PPP 링크의 설정, 유지, 종료를 관리한다. LCP는 링크 설정 과정에서 매우 중요한 역할을 한다.

    • Authentication Protocol (AP, 인증 프로토콜) : 인증 프로토콜은 두 가지 종류가 있다.

      • Password Authentication Protocol (PAP) : 비밀번호 기반 인증 프로토콜로, 클라이언트가 사용자 이름과 비밀번호를 서버에 평문으로 전송한다. 이는 낮은 보안 수준을 보장한다.

      • Challenge Handshake Authentication Protocol (CHAP) : 챌린지-응답 메커니즘을 사용하여 보다 보안이 강화된 인증을 제공한다. 서버가 클라이언트에 챌린지를 보내고, 클라이언트는 그 챌린지에 대한 응답을 해시 값으로 반환한다.

    • Network Control Protocol (NCP, 네트워크 제어 프로토콜) : NCP는 다양한 네트워크 계층 프로토콜을 지원하기 위해 사용된다. 각각의 네트워크 계층 프로토콜에 대해 NCP는 링크 상의 설정을 결정하고, 필요한 설정 정보를 교환한다.

  • MultiPlexing : PPP는 Multiplexing 기술을 사용하여 다양한 프로토콜을 동일한 링크에서 동시에 처리할 수 있다. 즉, 하나의 링크를 사용하여 각 단계에서 여러가지 프로토콜을 사용하여 작업을 처리한다.

    • 링크 설정 : LCP를 사용하여 링크를 설정하고 구성한다. 링크 품질 모니터링, 에러 검출 등이 이 과정에 포함된다.

    • 인증 : PAP, CHAP를 사용하여 클라이언트와 서버 간의 인증을 수행한다.

    • 네트워크 계층 설정 : NCP를 사용하여 네트워크 계층 프로토콜을 설정하고, 네트워크 계층 데이터를 전송할 준비를 한다.

    • 데이터 전송 : 링크가 설정되고 인증이 완료되면, 네트워크 계층 데이터를 전송한다.

    • 데이터 전송이 완료되면, LCP를 사용하여 링크를 종료한다.

profile
한량 극복 프로젝트

0개의 댓글