본문 바로가기

Computer Science/네트워크

[네트워크] HDLC 프레임

데이터링크 프로토콜은 2가지로 나뉜다.

데이터링크 프로토콜은

BSC(Binary Synchronous Communication) 와 같은 문자 방식의 프로토콜과 SDLC(Synchronous Data Link Control), HDLC(High level DLC) 와 같은 비트 방식의 프로토콜로 구분

 

이번에 많이 쓰일 것이 HDLC이다.

 

문자 방식 프로토콜 (byte oriented, character oriented) 은 전송된 프레임을 1 바이트의 문자로 해석하며 , 모든 제어 정보는 ASCII 코드로 구성

 

비트 방식의 프로토콜에서는 전송 프레임을 개별적인 비트의 전송으로 해석

이후에 나올 것이 비트방식이라고 생각하면 된다.

 

비트 방식 프로토콜의 예)

HDLC 프로토콜이란?

1979 년 ISO(국제표준위원회) 에서 데이터링크의 표준으로 채택한 대표적인 비트 방식 프로토콜 -> 1975 년에 IBM 에서 개발한 SDLC 에 기초

 

2계층 프로토콜이다.

 

1981년 ITU -T 에서 링크 엑세스 프로토콜 (LAPs: LAPB, LAPD, LAPM, LAPX 등) 이라 불리는 일련의 프로토콜들이 표준으로 채택 -> HDLC 에 기반한 프로토콜

 

SDLC -> HDLC -> LAP 가 나온 순서이다.

 

 

HDLC를 운영하는 스테이션의 역할에는 3가지 종류가 있다.

 

HDLC 스테이션의 3 종류

주 스테이션 (primary station) : 명령을 전송

해당 링크에서 커맨드를 내린다.

 

종속 스테이션 (secondary station) : 명령에 응답

주스테이션에서 내린 명령에 응답한다.

 

혼성 스테이션 (combined station) : 명령과 응답 모두 전송

 

HDLC 구성 방식

불균형 구성 (unbalanced configuration) 방식 : 주 스테이션과 종속 스테이션으로 구분하여 데이터링크를 구성하는 방식

제어 부분에 나온 그림과 같다.

주 스테이션이 명령을 내리면 종속 스테이션이 응답으로 작동하는 것

 

균형 구성 (balanced configuration) 방식 : 두 개의 혼성스테이션으로 구성하는 경우

혼성 스테이션은 한쪽에서 명령을 내리면 한쪽에서 응답할 수 있고 그 역할이 바뀔 수 있다.

 

 

HDLC 데이터 전달모드

PS - 주 스테이션

SS - 종속 스테이션

CS - 혼성 스테이션

 

NRM(Normal Response Mode): PS(주 스테이션) 이 SS(종속 스테이션) 으로 언제든 전송가능 

SS(종속 스테이션) 은 PS(주 스테이션) 의 폴(너 데이터 보내라!) 받아야 전송 

불균형구성 - 한쪽은 주 스테이션, 한쪽은 종속 스테이션으로 구성되어 있으니

 

ABM(Asynchronous Balanced Mode): 양측 CS(혼성 스테이션) 이 다른쪽 허락없이 언제든 전송 가능 ,

균형구성 - 밸런스 모드니깐, 구성도 균형 구성으로 되어 있다.

 

ARM (Asynchronous Response Mode): SS(종속 스테이션) 가 PS(주 스테이션) 의 명확한 허락없이 전송가능 ,

불균형구성

만약 균형구성이면 ABM 모드로 전송을 해야 한다.

불균형 구성이면 NRM, ARM중 협상을 해서 선택을 할 것이다.

 

 

HDLC 프레임 형식

모든 프로토콜 에는 what(무엇)에 해당되는 형식이 있다.

트레일러 - 꼬리 부분

헤더 - 앞쪽 부분

 

플레그 영역: 프레임의 시작과 끝

8 비트 . 고유의 패턴 (0111111110) 으로 구성

정보는 위에서 내려온 정보가 그대로 내려온다. HDLC에서 바꾸지 못한다. 이것을 실어 나를려고 HDLC를 쓰는 것이다.

정보 안에 우연히 1byte가 01111110이면 수신자 입장에서 프레임 해석할 때 끝 이라고 인식할 수 있다. 보낸 데이터가 재대로 전달이 안될 수 있다.

 

그래서 비트삽입 절차를 쓴다.

비트프레임의 처음이나 마지막이 아닌 중간에 1 이 연속해서 5 개 발생하면그 뒤에 0 을 추가 해서 중간에 0을 넣는 식으로 한다.

프레임의 길이가 임의의 길이기 때문에 시작인 플래그(8bit = 1byte)를 보여준다.

프레임이 끝났을 때도 플래그를 보여준다.

 

시작과 끝은 알려주는 특별한 비트이다.

주소(8bit = 1byte) - 누가 받아야 하는지

프레임을 수신하는 종속 스테이션(목적지 스테이션) 을 식별하는 데 사용

보통 8 비트길이를 갖지만 , 확장 형식을 사용할 수도 있음

주 스테이션이 모든 부 스테이션에게 프레임을 방송할 때(broad casting)는 11111111’ 주소값 사용

(링크에 있는 모든 노드들 이거 가져가서 해석 해봐라는 뜻)

 

제어(8bit = 1byte) - 이 메세지를 받아서 동작 해야 할 제어 메세지 저장

 

 

 

위 3가지가 헤더 이다.

 

정보 - 3층에서 내려온 패킷의 내용이 그대로 들어갈 것 이다.

정보 프레임(I 프레임),

감시 프레임 (S 프레임 ),

번호가 붙지 않은 프레임 (U 프레임,un number)

 

정보를 보내기 위한 프레임인지, 감시를 위한 프레임인지, 링크를 설정하거나 해지하는 번호가 붙지 않은 프레임인지

 

정보 영역은 I 프레임과 U 프레임에만 있으며 , 길이는 정해져 있지 않으나 

 

일반적으로 구현 방법에 따라 특정한 최댓값을 갖고 

일반적으로 길이는 8 비트의 배수가 되어야 함

다른 메세지에서는 페이로드 라고 한다.

 

정보영역은 모든 프레임에 있는 것은 아니다.

S-프레임은 제어용 메세지 이기 때문에 윗 계층의 정보를 전달하려는 프레임이 아니다.

 

I, U 프레임이 정보영역이 포함되어 있다.

 

FCS(Frame Check Sequence) - 꼬리 부분에 붙는다.

16 비트 CRC CCITT 또는 CRC- 32 사용

메세지를 수신했을 때 메세지에 오류가 있는지, 잘못온게 있는지 체크해주는 필드

 

 

 

비트삽입(bit stuffing)

정보 영역 안에 중간에 있으면 프레임의 해석이 끝이라고 인식할 수 있다.

목적 - 정보필드 안의 01111110 비트와 혼동을 피하기 위해

송신 측에서 5개의 1이 나오면 바로뒤에 0을 삽입한다.

수신측에서 비트를 넣어두었떤것을 빼는 작업도 해야 한다.

비트삽입했는지, 진짜 정보인지, 오류가 있는지 수신측에서 확인하고 비트를 빼야한다.

 

송신측에서 5개 연속적인 1을 감지를 했다면 그 다음 비트를 본다.

다음 비트가 0이라면 당연히 비트 삽입에 의해 삽입된 0이 있을 것이다. 그래서 무조건 삭제한다.

다음비트가 1이고 그 다음 자리가 0이면 그건 플래그이다. 그러면 플래그 처리를 한다.

다음비트가 1이고 그 다음 자리가 1이면 그건 오류이다.

 

HDLC프레임의 종류와 동작

HDLC 의 프레임의 종류

I 프레임 : 사용자 정보 전송

S 프레임 : 오류제어 관리 감시 (정보 영역 없음)

U 프레임 : 링크의 연결과 해제 (프레임 종류에 따라 정보 영역 있을 수 있음)

 

정보 프레임 (I 프레임)

HDLC 의 기본동작 : I 프레임의 교환으로 정보전송 윗 계층에서 내려온 정보를 헤더와 트레일러를 붙혀서 전송하기 위한 목적

i-프레임은 예상되는 다음프레임의 순서번호 (N(R)) 와 전송 프레임의 순서번호 (N(S)) 를 포함

 

전송할 때 전송하는거 몇번이야~ 하고 번호를 붙힌다. 상대가 나한태 보내서 받기를 희망하는 번호를 같이 보낸다.ACK하는 것(받은 것을 보낼 수도 있지만 원하는 것을 보낼 수 있다.)

ex)RR4와 같이 다음번에 4번줘~ 하는 뜻이다.

 

제어 비트 8비트의 첫 번째는 0이면 i 프레임이다.

 

다음 3비트는 보내고 있는 번호를 보낸다.

P/F 비트에는 1이면 p, 0이면 f pull, final 인 뜻이다. pull이면 물어본다는 뜻

 

남은 3비트는 내가 받기를 원하는 번호를 넣는다.(ACK 보내는 느낌)

 

I 프레임의 P/F 영역 : 주 스테이션으로부터의 명령을 위한 비트는 'P(Poll)’ 비트이고 , 종속 스테이션으로부터의 응답을 위한 비트는 'F(Final)’ 비트

 

8비트에서 처음이 10 시작이면 s-프레임

11시작이면 u- 프레임이다.

 

u-프레임은 어떤 목적인지 나머지 5비트는 쓴다. 총 2^5=32 가지의 u-프레임이 존재한다.

감시 프레임 (S 프레임)

-흐름제어나 오류제어를 위해 사용

 

-GBn ARQ 와 SR ARQ 를 허용

 

-피기백(돼지를 등에 업는다.)을 하는 I 프레임이 없을 때 S 프레임의 RR(Receive Ready) 로 ACK 를 나타냄

피기백 - 아까 i 프레임은 보내는 프레임의 번호와 받기를 희망하는 ACK번호를 같이 보낸다.

 

-RNR(Receive Not Ready) 은 RR 이 올 때까지 더 이상의 I 프레임을 전송 중지를 요청하기 위해 사용됨

총 4가지의 메세지를 s프레임이 보낼 수 있다.(RR,RNR, REJ, SR)

 

-RR, RNR, REJ 프레임에서 N(R) 은 다음 기대되는 I 프레임의 순서번호를 표시하며 , SR 에서 N(R) 은 거절된 프레임의 순서번호가 됨

 

N(R) - 다음에 recieve하기를 희망하는 번호

 

SR은 그 번호만 다시보내라는 뜻이니깐 재전송 해줄 번호를 s-프레임에 담아서 보낸다.

 

-감시 프레임 내의 P/F 비트 사용

주 스테이션은 종속 스테이션에 대한 폴을 하기 위해(명령하기위해, 물어보기위해) RR 프레임 내의 P 비트를 설정

RR - P/F비트를 1로하면 너 뭐 받을 준비 되어있니? 하고 말하는 것

RR - P/F비트를 0으로 설정해서 응답을 해준다.(~~번 받을 준비 되어있어)

 

종속 스테이션i-프레임이 있으면 i-프레임을 전송하고 , 그렇지 않으면 보낼 데이터가 없다는 표시로 F 비트를 설정하여 RR 을 보냄

 

주 스테이션은 종속 스테이션 혼성 스테이션의 수신 상태를 알기 위해 RNR 명령(아직 준비 안되어 있니?)의 P 비트를 설정하여 전송

RNR(P) 을 수신한 스테이션이 i-프레임을 수신할 수 있으면 F 비트를 설정하여 RR 로 응답

RNR로 너 받을 수 있어? 라고 보내면 i-프레임을 보내야 하는데 F 비트로 설정하여 RR로 나 몇 번 비트 받을 수 있어라고 응답한다.

 

수신 준비가 되어 있지 않을 경우는 F 비트를 설정하여 RNR 로 응답하게 됨

 

번호가 붙지 않은 프레임 (U 프레임)

링크의 연결과 해제 등 여러 가지 제어 기능을 위해 사용

순서번호가 없으며 , 번호를 가진 I 프레임의 순서나 흐름을 바꾸지 않음

 

 

HDLC 프레임의 동작

순차번호 N(S),N(R)

순차번호를 위해서 3 비트 영역 할당 , 모듈로 8 순차번호 매김 방식

 

N(S)(sending)

N(S) 의 숫자의미 : 현재 i-프레임의 순차 번호를 나타내며 , 뒤이어 보내지는 i-프레임의 N(S) 는 1 씩 증가함

모듈로 8 의 유한한 값을 갖는 순차번호가 사용되므로 , 전송 측에서 N(S) 가 최대 순차번호에 이르게 되면 전송을 중지해야 함

수신 측에서 전송 측으로 정상적인 수신을 알리는 프레임(ACK) 을 받은 후에야 전송 측은 다시 전송 시작

 

N(R)(receive)

i-프레임과 S 프레임의 안에 위치

정상적 수신을 알리고자 할 때 사용

 

N(R) 의 숫자의미 : N(R)-1 이하의 모든 프레임은 정상적인 수신과 N(R) 번호를 갖는 정보 프레임의 수신을 원한다는 것을 나타냄

ex) N(R) = 5이면 니가 보낸 4번까지 잘 받았다는 의미 앞으로 5번 받을 차례다.

 

i-프레임의 N(R) 은 역방향 i-프레임 ACK 기능까지 함께 실어 보내는 피기백 기능을 제공

 

 

S 프레임

3,4 번째 bits 는 코드값으로 4 가지 S 프레임 종류 나타냄

비트에 따라 메세지를 의미하는게 다르다.

RR 프레임이라는 개별적 ACK 도 사용 가능

 

내가 보낼 데이터가 없다. 내가 받을 것에 대한 확인을 해줘야 한다.

전송할 I-프레임이 없는 경우 정상적인 ACK 프레임을 보내거나 , 혹은 ACK 하나를신속히 보내야 할 경우에 사용

 

REJ(Reject)/SREJ 프레임은 비정상적 수신을 알리는 NAK

 

오류제어하는 부분

GBn ARQ: REJ 프레임으로 인해 N(R) 부터 그 이하(=다음 것들) I 프레임 전체가 거절되어 그 이하 모든 프레임들이 재전송되어야 함 ex)N(R) = 3이면 3번 부터 다시보내 라는 뜻

SR(selective reject) ARQ: 해당 N(R) 만 재전송

 

RR -  N(R) = 3이면 2번까지는 잘 받았고 3번 받을 차례라는 뜻이다.

RNR - 받을 준비가 안됬다. N(R) =5일 때 4까지는 잘 받았으나 5번 받을 준비는 안되어 있다.

REJ - ARQ 같이 오류제어, N(R) =3 이면 3번 이후의 것을 보내라

SREJ - 해당 번호만 다시 보낸다.

 

U 프레임

다섯 개의 비트를 이용 32 가지 메시지로 세분화됨

5비트를 사용한다.

 

HDLC 프레임의 동작 예

(a)는 링크를 만들고 해제 = U- 프레임

Set ABM mode(balance mode)로 양 측이 데이터를 전달할 때 허락없이 전송할 수 있는 균형 구성

타임아웃 되서 다시 보낸다.

 

UA - U-프레임의 메세지이다. 잘 받았다는 의미

DISC - U-프레임의 32가지 메세지중의 하나. 끊는다는 의미

번호가 하나도 없다.

 

(b)는 양 측에서 동시에 데이터를 교환한다. = I - 프레임

번호가 2개가 들어간다. send 번호, reseive번호

 

송친 측에서 0번 보내고 0번 받고싶어 한다.

수신 측에서 0번 받았고 1번 받고싶어 한다.

 

송신측에서 1번 보내고 1번 받고싶어한다.

송신측에서 2번 보내고 1번 받고싶어한다.

수신측에서 1번 보내고 3번 받고싶어한다.

 

송신측에서 3번 보내고 2번 받고싶어한다.

수신측에서 2번 보내고 4번 받고싶어한다.

수신측에서 3번 보내고 4번 받고싶어한다.

 

송신측에서 보낼 데이터가 없으니 RR 4로 3번 잘 받았고 4번 받을 차례 라는 의미

 

(c)바쁜 상황은 조절하는 역할 = S- 프레임

B - 3번 보내고 0번 받고 싶어한다.

A - RNR 4 - 3번까지 잘 받았어, 아직 받을 차례 안됬어

B - P비트를 설정해서 RR을 보낸다. 받을 준비 되었나? 나는 0번 받고 싶어

A - F비트로 응답해준다. 나 4번 받을 준비 안됬어(RNR)

B - P비트를 설정해서 RR을 보낸다. 받을 준비 되었나? 나는 0번 받고 싶어

A - F비트로 응답해준다. 나 4번 받을 준비 됬어(RR)

(d) 불량 회수

A에서 3개의 프레임을 연달아 보냈다.

0번 받고 싶다고 ACK를 같이 보냈다.

근데 4번이 손실이 났다.

B에서는 3,5번이 왔으니 4번이 안왔다는걸 안다.

 

그래서 B에서 REJ 4를 보낸다. 4번을 다시보내줘 라는 뜻이다.

A는 4번부터 다시보낸다.

B는 다시 받은걸로 실행하고 전에 받은 것을 폐기한다.

 

(e) 타임아웃 회수

B가 2번을 받고 확인을 해줄 여유가 있었나보다. RR 3으로 3번 받을 차례라고 보냈다.

3번 보낸 것에 대한 확인이 안왔다. 그래서 타임아웃이 왔다

 

A가 P 비트를 설정해서 뭐 받을 차례야 라고 물어본다.

B가 F 비트를 설정해서 나 3번 받을 차례라고 알려준다.

 

 

요약

회선 제어

폴링 기법

흐름 제어

stop and wait

슬라이딩 윈도우

 

오류제어

HDLC

i-프레임

s-프레임

U-프레임

728x90