Data Link control Protocol

JUNG GYUWON·2023년 10월 18일
0

Data Communication

목록 보기
15/15

앞서 설명하였듯이, data link control layer는 framing과 error control의 기능을 수행한다

이러한 기능들은 protocol이 정의하고 하는데 Data link protocol의 대표적인 protocol에 대해서 알아보자

  1. HDLC Protocol
  2. Point-to-Point Protocol

이 둘은 완전히 다른 개념이라기 보다는 HTTP도 있고 SMTP도 있듯이 Data Link Control protocol의 2가지 예로 활용방안에 따라 선택된다


bit-oriented protocol로 point to point 통신이나 multipoint link 위에서 돌아가는 protocol이다

bit-oriented이기 때문에 bit stuffing을 통해서 data를 구분한다

HDLC는 다양한 구성에서 사용할 수 있는 두 가지 전송 모드를 제공한다

  1. 일반 응답 모드(NRM)
  2. 비동기 균형 모드(ABM)

Normal Response Mode(NRM)

NRM은 하나의 primary station과 secondary station으로 나누며 primary station은 명령을 보내기만 하고, secondary station은 명령에 응답만 한다

NRM은 point-to-point와 multipoint links 모두에 사용된다


Asynchronous balanced mode(ABM)

link는 point-to-point이며 모두가 primary station이자, secondary station이 될 수 있다


Frame

NRM, ARM등 2가지 모드와 다양한 옵션을 위해서 HDLC는 세 가지 유형의 프레임을 정의한다

  1. Information frame (I-frame)
  2. Supervisory frame (S-frame)
  3. Unnumbered frame (U-frame)



frame은 5가지 종류의 필드로 구성된다

Flag

01111110 으로 frame의 경계임을 알려준다

multi frame 전송에서는 한 frame의 ending flag가 다른 frame의 시작 flag를 나타낸다

Address

1 byte나 필요에 따라 몇 byte의 길이를 가지는 필드로 secondary station의 주소만 포함한다

보통 HDLC는 WAN에서 주로 사용하는데 WAN의 경우에는 traffic이 어느정도 일정하기 때문에 경로가 정해져 있다.
즉, 받는이가 정해져 있을 때는 primary와 secondary 모두의 MAC 주소가 필요한 것은 아니기 때문에 secondary의 MAC 주소만 적어준다

primary station이 frame을 만들면 to를 주소에 포함하고
secondary station이 frame을 만들면 from을 주소에 포함한다

Information

말 그대로 network layer에서 보낸 데이터를 담은 부분이다

FCS

2byte 또는 4byte CRC 코드를 포함하는 error detection 전용 field이다

Control

error control 이나 flow control에 사용되는 1 또는 2 byte 필드로 frame의 종류와 기능을 결정한다

즉, frame 종류에 따라서 control에 들어가는 정보들이 다르다


Frame의 종류

I-frames

사용자 데이터 및 사용자 데이터와 관련된 제어 정보를 전송하는 데 사용된다
(가장 일반적으로 사용하는 frame)

추가로, flow control과 error control 정보를 포함할 수도 있는데 이렇게 데이터를 보냄과 동시에 아까 받은거에 대한 feedback도 제공해 주는 것을 piggybacking이라고 한다

모든 종류의 frame에 공통적으로 첫번째 bit는 frame의 종류를 결정한다

  • 0: I-frame
  • 10: S-frame
  • 11: U-frame

I-frame의 그 다음 3bit는 N(S)라고 불리며, frame의 순서를 정의한다 (0~7)

I-frame의 마지막 3bit는 N(R)로 불리며, piggybacking을 사용할 때 ACK으로 사용한다

P/F 1bit는 poll이냐 final이냐를 뜻하는데 둘다 1이므로 항상 1이다
(poll은 primary station에서 secondary station으로 보낸 것이고 final은 그 반대이다)


S-frames

flow control이나 error control과 같은 제어 정보만 전송하는 데 사용된다

제어 정보만 전송하기 때문에 ACK 뿐만 아니라 NAK도 전송할 수 있다

S-frame은 information field가 없고 대신 Code라고 불리는 2bit field가 있는데 이 필드는 S-frame의 종류를 알려준다

00: Receive ready (RR) / 받을 준비가 됐다는 뜻으로 N(R)은 ACK number이다
10: Receive not ready (RNR) / 방금까진 받았는데 이제 못받는다는 뜻으로 N(R)은 ACK number이다
01: Reject (REJ) / 못 받았으니 해당 번호 이후로 다시 달라는 뜻이다
11: Selective reject (SREJ): 특정한 번호만 못 받았으니 그것만 다시줘 라는 뜻이다


U-frame

연결된 장치 간의 세션 관리 및 제어 정보를 교환하기 위해 사용된다

S-frame과 달리 information field가 있지만 이는 system management를 위한 정보를 담는 것이지 user data를 담지 않는다

U-frames에 의해 전송되는 정보는 링크 자체를 관리하기 위한 것이고 이 메시지들은 시스템에 예약되어 있다

위 그림과 같이 Code 영역이 2bit 접두사 + 3bit 접미사로 5bit 이기 때문에 총 32개의 message를 정의할 수 있고 이에 따라 필요한 정보인 management information이 다르다 (근데 실제로는 32개 다 예약되어 있지는 않음)


Point-to-Point Protocol (PPP)

point-to-point 접근을 위해 사용하는 기본적인 protocol이다


PPP의 구성 필드

PPP는 character-oriented frame으로 6개의 field로 구성된다
Flag

1byte flag (01111110)을 가진다

Address

PPP는 어차피 point-to-point이기 때문에 주소가 필요 없어서 broadcast 주소인 11111111로 입력된다

Control

PPP는 flow control과 제한된 error detection만 제공하기 때문에 00000011 상수 값으로 입력된다

Protocol

data field에 있는 데이터가 어떤 데이터인지 정의한다 (어떤 프로토콜용 데이터인지 프로토콜을 bit로 표현하여 명시한다)

2byte 길이지만 1byte만 사용하도록 약속하였다

FCS

2byte 또는 4byte CRC 코드를 포함하는 error detection 전용 field이다

detection만 하기 때문에 error가 발생하면 무조건 재전송 해야한다

Payload field

user data나 다른 information을 실제로 옮기는 부분

1500byte로 크기가 고정되어 있고 이 안에는 byte stuffing로 인한 escape 문자열(0x7D: 01111101)도 포함된다

PPP의 경우에는 ESC는 01111101 이고 flag는 01111110
즉 01111101 다음에 나오는 01111110은 flag로 인식되지 않고 데이터로 인식된다

만약 1500 byte 보다 작으면 padding을 사용하여 빈 공간을 0으로 채운다


PPP의 transition 단계

  1. transition이 시작되면 먼저 dead state로 출발한다
  2. 두개의 node가 통신을 시작하면 establish 단계로 이동한다
  3. 두개의 노드가 서로 인증하기 위해 authenticate 단계로 이동한다
  4. 여기서 인증이 되면 network 단계로 이동하고, 인증이 안되면 terminate 단계로 이동한다
  5. data 전송은 open 단계에서 실행된다
  6. 두 node 중 하나가 연결을 종료시키길 원하면 terminate 단계로 이동한다

Multiplexing

PPP는 link를 만들고 authentication을 하고 network-layer와 데이터를 주고받기 위해서 다른 protocol을 사용한다

Link Control Protocol(LCP) 한 개, Authentication Protocol(AP) 2개, Network Control Protocol(NCP) 여러개가 PPP를 도와준다

종류는 3가지 이고 개수는 LCP는 1개, AP는 2개, NCP는 여러개이다!

위 사진에서 보듯이, Protocol의 값에 따라서 해당 데이터가 어떤 protocol의 데이터인지 알 수 있다

Link Control Protocol (LCP)

LCP는 establishing, maintaining, configuring, ternimating의 역할을 한다

option을 설정하기 위한 negotiation mechanism을 제공하고, 두 endpoint가 모두 option들에 동의해야 link가 establish 된다

Authentication Protocol (AP)

말그대로 user를 식별하기 위해 인증하는 것으로, PPP는 authentication을 위해 2개의 protocol을 만든다

  • PAP
  • CHAP

PAP: Password Authentication Protocol
1. system에 접근하기 원하는 사용자는 id와 password를 system에 보낸다
2. system은 id와 password의 유효성을 체크하고 연결을 accept 하거나 deny 한다

CHAP: Challenge Handshake Authentication Protocol

  • PAP 보다 더 안전한 3-way handshaking authentication protocol 이다
  1. system은 user에게 challenge value를 포함한 challenge packet을 보낸다
  2. user는 미리 정의해놓은 함수에 challenge value와 자신의 비밀번호를 입력하고 결과를 packet에 담아 system에 보낸다
  3. system도 user의 password와 challenge value로 같은 함수를 적용하고 만일 결과가 같다면 accept 되고 다르면 deny 된다

Network Control Protocol (NCP)

NCP protocol를 사용하여 network layer로 부터의 data를 변환할 수 있다

NCP는 그냥 다양하게 있다만 알아둬도 됨


PPP는 point-to-point protocol로 기존에 single-channel로 설계되었지만 single point-to-point link에서의 multiple channel 기술이 multilink PPP로 발달시켰다

위 그림과 같이 하나의 큰 logical PPP frame은 여러개의 PPP frame으로 쪼개지고 이는 여러개의 채널로 보내진다

따라서 multilink PPP에서는 이렇게 쪼개진 애들임을 알려주기 위해 protocol field를 0x3d로 설정하고 sequence number도 PPP frame에 추가한다
(multi point가 아니라 multi link 이므로 address는 여전히 필요없음!)

profile
반가워요😎

0개의 댓글