• toc {:toc}

Notice

Computer Networks 글은 경희대학교 소프트웨어융합대학 이성원 교수님의 [컴퓨터 네트워크 CSE302] 수업을 기반으로 정리한 내용입니다.

DLC (Data Link Control)

  • 인접한 2개의 노드 사이의 통신 절차를 다룬다.

Framing

  • DLC는 프레임에 비트를 함께 넣어 각 프레임이 다른 것과 구분할 수 있도록 한다.
  • Data-Link 계층은 sender address와 destination address를 추가함으로써 메시지를 분리할 수 있도록 한다.
  • Sender address : 수신자가 데이터를 받고 ACK를 보낼 수 있도록 돕는다.
  • Destination address : 패킷이 어디로 가야할지를 결정한다.

image

  • 파란 부분이 3계층에서 보낸 데이터이다.
  • Flag : Physical layer에게 정보가 DLC로부터의 메시지라는 것을 알려주는 역할을 한다.
  • 앞 쪽 Flag는 시작, 뒷 쪽 Flag는 메시지 종료. Flag는 byte 단위로 이루어진다.

image

  • 위 그림은 Byte stuffing과 unstuffing의 예시를 보여준다.
  • 데이터와 Flag가 서로 같은 경우 혼선이 생길 수 있기 때문에 주황색 ESC를 suffing하여 Flag가 아니라 데이터임을 알려준다.
  • 이후 프레임을 수신하면 ESC를 unstuffing하여 원래의 정보를 복원한다.

image

  • 다음은 비트 stuffing, unstuffing을 나타낸 그림이다.
  • Flag 바이트를 (01111110) 다음과 같이 사용한다.
  • 실제 데이터 내부에 동일한 비트 배열이 있게 되는 경우를 방지하기 위해 의도적으로 5개의 1이 있다면 다음 비트에 0을 삽입하는 비트 stuffing을 사용한다.
  • 이후 프레임을 수신하면 비트 0을 unstuffing을 통해 원래 정보를 복원한다.

Flow and Error Control

  • Data Link Control 계층의 가장 중요한 역할 흐름 제어, 에러 조정

image

  • DLC 프로토콜은 connectionless(비연결 지향), connection-oriented(연결 지향)이 있다.
  • 네트워크 계층, 트렌스포트 계층에서 다시 보자.

Simple Protocol

image

  • 흐름, 에러 조정이 없는 간단한 프로토콜이다.
  • 수신자에게는 수신하는 프레임을 즉시 다룰 수 있다고 가정한다. (=넘치지 않는다.)

image

  • Sending node
  1. Start 상태에서 Ready 상태로 가서 패킷을 받을 준비를 한다.
  2. 네트워크 계층에서 Event(패킷)를 받으면 Action(프레임을 만들고 송신)을 한다.
  3. 이후 다시 Ready 상태로 돌아가는 과정을 반복한다.
  • Receiving node
  1. Start 상태에서 Ready 상태로 가서 프레임을 받을 준비를 한다.
  2. Event(프레임)를 받으면 Action(패킷을 네트워크 계층으로 전달)을 한다.
  3. 다시 Ready 상태로 돌아가는 과정을 반복한다.

image

  • 에러는 반드시 날 수 밖에 없다.

Stop-and-Wait Protocol

  • 흐름, 에러 조정을 사용한 프로토콜이고 해당 방식은 원초적인 버전이다.
  • Sender는 한 번에 하나의 프레임을 보내고 다음 것을 보내기 전에 ACK를 기다린다.
  • 손상된 프레임을 탐지하기 위해 각 데이터 프레임에 CRC(Cycling Redundency)를 추가한다.
  • CRC에서 0과 1이 변조된 경우 에러가 발생한 것으로 판단하고, 손상된 프레임은 버린다.
  • Stop-and-Wait 프로토콜은 half-duplex 방식이다.

image

  1. 송신자에서 CRC를 붙여 전송한다.
  2. 수신자가 프레임의 CRC값을 계산하여 오류가 있는지 확인한다.
  3. 오류가 있다면 ACK를 보내지 않고 오류가 없다면 ACK를 전송한다.
  4. 송신자는 ACK에 있는 CRC와 보낸 프레임의 CRC를 비교하여 올바른 수신이 완료됐음을 판단할 수 있다.
  5. 송신자가 ACK를 일정 시간 동안 수신하지 못했다면 송신자는 프레임을 재전송한다.

image

  • Sending node
  1. Ready 상태에 들어서면 패킷을 받을 준비를 한다.
  2. 패킷을 받으면 프레임을 만들고 복사(ACK 못 받았을 경우 재전송하기 위해)한다.
  3. 프레임을 전송하고 타이머를 시작한다.
  4. 타이머가 터진 경우 프레임을 다시 보내고 타이머를 재설정한다.
  5. CRC에 오류가 있는 ACK를 받은 경우 ACK를 버린다.
  6. 오류가 없는 ACK를 받은 경우 타이머를 멈추고 복사해둔 프레임을 버린다.
  7. Blocking 상태에서 패킷이 오면 쌓아둔다.
  • Receiving node
  1. Ready 상태에서 프레임이 도착하기를 기다린다.
  2. 오류가 있는 프레임을 받을 경우 프레임을 버린다.
  3. 오류가 없는 프레임을 받을 경우 패킷을 네트워크 계층으로 전달하고 ACK를 전송한다.

image

  • 통신이 잘 된 상황
  1. 송신자는 패킷을 받아 프레임을 생성하고 수신자에게 전송
  2. 수신자는 패킷을 네트워크로 전달하고 ACK를 송신자에게 전송
  3. 올바른 ACK를 송신자가 받아 통신 종료
  • 전송 시 프레임이 전달되지 않은 경우
  1. 송신자가 프레임을 수신자에게 전송
  2. 수신자가 프레임을 받지 못하고 송신자가 ACK를 타이머가 끝날 동안 받지 못함
  3. 송신자가 프레임을 재전송
  4. 통신이 잘 된 상황과 동일한 과정
  • ACK 프레임이 전달되지 않는 경우
  1. 송신자가 프레임을 수신자에게 전송
  2. 수신자가 ACK 전송하지만 ACK가 전달되지 않음
  3. 타이머가 끝나고 송신자가 프레임을 재전송
  4. 수신자가 프레임을 받고 ACK 전송
  5. 수신자 입장에서는 동일한 프레임을 받는 경우가 발생한다.

image

  • ACK 프레임이 전달되지 않는 경우 발생하는 중복을 막기 위해 프레임에 번호를 붙인다.
  • 0 또는 1의 번호를 붙인다.
  • 프레임 0으로 전달되는 경우 ACK 1을 보낸다.
  • ACK 1이 전달되지 않는 경우 프레임 0을 재전송하여 ACK를 받는다.
  • 수신자 입장에서 프레임 0이 중복되었기 때문에 두 번째 프레임 0은 버린다.

Piggybacking

  • 양방향의 full-duplex 방식이다.
  • 프레임을 전송할 때 ACK를 뒤에 붙여서 전송한다.

Go-Back-N Protocol

  • Go-Back-N 프로토콜에서는 sender가 ACK를 기다리지 않고, 여러 프레임을 보낸다.
  • 에러가 발생할 경우 N번 뒤로 보내서 다시 보내는 방식을 사용한다.

image

  • 위 그림은 Go-Back-N 프로토콜을 사용했을 때 sender buffer를 표현한 그림이다.
  • Go-Back-N 프로토콜은 여러 프레임을 전송할 수 있는데 이때 보낼 수 있는 크기는 이다.
  • m은 버퍼의 비트 수를 의미한다.
  • ACK를 받지 않아도 여러 개의 프레임을 전송할 수 있다.
  • ACK를 수신하면 window가 이동한다. ACK를 수신한 프레임은 점선처리가 되어 있다.
  • 버퍼는 circular queue로 되어 있다.

image

  • Window size를 왜 로 해야하는가에 대한 그림이다. m=2이다.
  • 프레임을 전송하고 ACK를 전부 받지 못한 경우 프레임 0부터 재전송해야하는 상황임을 가정한다.
  • a의 경우 window size가 일 때 프레임 0, 1, 2를 보낸 후 다시 0을 재전송할 수 있다.
  • b와 같이 window size가 이라면 프레임 0, 1, 2, 3을 보낸 후 다시 0을 재전송해야 하지만 새로운 프레임 0과 재전송하는 프레임 0이 겹치기 때문에 혼선이 발생한다.

image

  1. 윈도우 위치를 초기화한다.
  2. 수신자로부터 프레임 0의 요청이 들어오고 송신자는 프레임 0을 수신자에게 전송한다.
  3. 수신자는 프레임 0에 대한 ACK 1와 프레임 1에 대한 요청을 송신자에게 보낸다.
  4. 송신자는 ACK를 받고 윈도우를 이동시킨다.
  5. 송신자는 프레임 1을 수신자에게 전송한다.
  6. 수신자는 프레임 1에 대한 ACK 2와 프레임 2에 대한 요청을 송신자에게 보낸다.
  7. ACK 2가 중간에 유실되어 받지 못하고 송신자는 프레임 1, 2를 수신자에게 전송한다.
  8. 수신자는 프레임 1, 2를 받았다는 ACK 3을 송신자에게 전송한다.
  9. ACK 3를 받기 전이라도 데이터가 준비되면 한 번에 프레임 1, 2, 3을 전송한다.
  10. ACK 3을 받았기 때문에 프레임 2까지 수신이 완료됨을 확인하고 윈도우를 이동시킨다.

image

다음과 같이 프레임 1이 유실되더라도 일정 시간동안 ACK를 받지 못한다면 윈도우 안에 있는 프레임을 계속해서 전송함으로써 전송을 용이하게 한다.

다만, 하나의 프레임에 오류가 발생할 경우 여러 프레임을 반복적으로 재전송해야 한다는 단점이 있다.

Selective Repeat Protocol

  • Go-Back-N의 단점을 보완하기 위한 방법으로 Selective Repeat ARQ는 오류가 난 수신 프레임만 전송한다.
  • 중간에 프레임이 유실되면 receiver는 NAK를 보내 에러가 난 프레임을 재전송하도록 만든다.

image

image

  • Go-Back-N과 Selective Repeat 프로토콜은 window size가 다르다는 차이점을 갖는다.
  • Go-Back-N의 경우 인 반면 Selective Repeat는 이다.
  • Go-Back-N의 경우 프레임이 손상되어 수신자에게 전달된 경우 프레임을 버리면 되지만 Selective Repeat은 올바르게 수신된 프레임은 저장해야 하기 때문에 저장 공간이 더 필요하다.
  • 즉, Selective Repeat의 경우 손상된 프레임 윈도우를 수신받을 공간, 일반적인 프레임 윈도우를 수신 받을 공간이 필요하기 때문에 의 window size를 갖는다.
  • 위 그림의 빨간색 부분이 올바르게 수신 받은 프레임이고 흰색 부분이 손상된 프레임이다.

image

Go-Back-N과 비슷한 이유로 window size가 보다 크면 안 된다.

image

  • 프레임 1이 손상된 경우 수신자는 NAK 1을 송신자에게 전송한다.
  • NAK 1을 받은 송신자는 프레임 1을 수신자에게 재전송한다.
  • 프레임 1을 수신한 수신자는 ACK 4를 송신자에게 전송하고 윈도우을 이동시킨다.
  • ACK 4를 받은 송신자는 윈도우를 이동시킨다.

DLC Example

  • Stop-and-Wait 프로토콜을 사용한다. PPP, Ethernet, Wireless LAN에 자주 사용되는 개념이다.

image

  • I-frame, S-frame, U-frame 3가지 프레임을 갖는다.
  • I-frame(Information Frame) : CRC와 대응되는 FCS(Frame Check Sequence)가 있다. 데이터 전달, 데이터에 대한 확인 응답을 보낼 때 사용. Control이 0으로 시작한다.
  • S-frame(Supervisior Frame) : 유저 정보가 없는 프레임. 오류 제어와 흐름 제어를 위해 사용한다. Control이 10으로 시작한다.
  • U-frame(Unnumbered Frame) : 유저 정보가 아닌 통신 링크를 유지하는 사람이 필요한 정보를 전달하는 프레임. 링크의 동작 모드 설정과 관리, 오류 회복을 수행한다. Control이 11로 시작한다.

image

PPP(Point-to-Point Protocol)

  • 컴퓨터 개인 사용자와 인터넷 서비스 제공자의 서버를 연결시키는 것에 사용되는 프로토콜이다.
  • 이동 통신(2계층)에서 사용된다.
  • 서로 다른 원격 액세스 소프트웨어들이 인터넷 전용선, 또는 모뎀과 전화선 등으로 연결하여 TCP/IP 프로토콜로 통신할 수 있도록 제정된 표준규약이다.
  • Establish : Carrier가 탐지되면 기지국이 보내는 신호를 잡았다는 의미이므로 1계층을 서로 연결한다.
  • Authenticate : 스마트폰 안 유심을 확인해 합법적 사용자인지를 확인한다.
  • Network : 합법적 사용자라면 IP 프로토콜이 잘 전달될 수 있도록 네트워크 계층을 설정한다.

image

  • LCP (Link Control Protocol)

    • PPP를 개설, 유지, 종료, 시험을 담당하는 프로토콜이다.
    • 최대 프레임 길이와 인증 프로토콜(PAP, CHAP)의 종류를 결정한다.
  • AP (Authentication Protocol)

    • 사용자의 합법성 유무를 담당하는 프로토콜이다.
    • ex) 스마트폰 유심 확인을 통해 합법적인 사용자인지를 판단한다.
  • NCP (Network Control Protocol)

    • 서로 다른 네트워크 계층 프로토콜을 사용할 수 있도록 하고 세부적인 제어가 가능하도록 한다.
      • 다양한 종류의 네트워크 프로토콜로 데이터를 전달할 수 있게 한다.
      • 단일 PPP 링크에 다수의 네트워크 프로토콜을 사용할 수 있다.
  • Encapsulation

    • 3계층의 패킷을 프레임화 한다.
    • HDLC 방식에 기초한 프레임화 기법을 사용 안정된 전송을 보장한다.
  • 단계

  1. Establish 단계에 PPP는 LCP의 명령을 전달한다.
  2. LCP가 만족해 Authenticate 단계로 넘어가면 AP를 확인하고 만족하면 넘어간다.
  3. 이후 NCP를 통해 네트워크를 설정한다. 즉, PPP는 네트워크 프로토콜로 통신할 수 있도록 만든다.
  • 이동 통신 사용자의 합법성 여부를 검출해야 하거나 IP와 같은 특정 프로토콜로 통신할 수 있도록 만들기 위해 사용한다.

image

참고문헌

  • Textbook: Behrouz A. Forouzan, “Data Communications and Networking, 5th Edition”, McGraw-Hill Companies, Inc.

연결문서

  • 다음 노트 - 2023-10-03-ComNet-L04-MAC-DLC1
  • 이전 노트 - 2023-10-02-ComNet-L02-MAC