High Level Data Link Control (HDLC)
스테이션(Station) 유형
-
Primary (주 제어)
링크 제어 명령(Commands) 발행
-
Secondary (종속 제어)
Primary의 명령에 응답(Responses)만
-
Combined (혼합 제어)
Primary/Secondary 역할을 모두 수행
링크 구성 모드
HDLC Data Transfer Modes
Normal Response Mode (NRM)
- 용도: Polling 방식의 다중 드롭(multi-drop) 링크
- 구성: Unbalanced (1 Primary ↔ 다수 Secondary)
- 전송 시작: 오직 Primary만
Asynchronous Balanced Mode (ABM)
- 용도: full-duplex point-to-point 링크
- 구성: Balanced (2개의 Combined 스테이션)
- 전송 시작: 어느 쪽 스테이션이든 가능
- 가장 널리 사용
Asynchronous Response Mode (ARM)
- 구성: Unbalanced
- 전송 개선: Secondary가 Primary 허가 없이도 전송 가능
- 사용 빈도는 매우 낮음
HDLC Frame Structure
HDLC 프레임 구조

프레임 전반(8n 비트 단위)
- Flag: 프레임의 시작·끝을 표시
- FCS(Frame Check Sequence): 헤더와 정보 필드 전체에 대한
CRC 오류 검출 코드(기본 16비트, 필요시 32비트)
주소 필드(Address Field)
- 기본 8비트, 필요시 7비트 청크를 연속 사용(n개)해 확장 가능
- 각 청크 최상위 비트(MSB)가 1일 때 “마지막 옥텟”임을 나타냄
제어 필드(Control Field)
비트 스터핑(Bit Stuffing)
-
송신 측에서는 ‘1’이 다섯 개 연속으로 전송될 때마다
자동으로 ‘0’을 하나 끼워 넣음
-
이렇게 삽입된 ‘0’은 검사용(stuffed) 비트로,
수신 측에서 꺼내서(비트 디스터핑) 원래 데이터 스트림을 복원함
Address Field
HDLC 주소 필드
: 해당 프레임을 전송했거나 받을 Secondary 스테이션을 지정
- 기본 8비트(1옥텟)
- 필요 시 7비트씩 추가 확장 가능(다중 옥텟)
확장 옥텟의 구분
- 각 옥텟 최상위 비트(MSB):
1
→ 마지막 옥텟
0
→ 뒤에 추가 옥텟 있음
브로드캐스트 주소
11111111₂
사용 시, Primary가 모든 Secondary에 프레임을 동시에 전송
HDLC Frame Structure
- 용도: 사용자 데이터(payload)를 전송
- 데이터 전송과 동시에 흐름 제어(flow control)·오류 제어(error control) 정보를 ARQ 방식으로 piggybacking해서 보냄
Supervisory Frame (S-Frame)
- 용도: ARQ 제어(재전송 요청, 수신 확인)
- 데이터 페이로드는 없음 (보낼 data 없는 경우)
Unnumbered Frame (U-Frame)
- 용도: 링크 설정·해제, 상태 전환, 모드 전환 등 보조 제어 기능
Control Field
HDLC 제어 필드(Control Field)
P/F 비트(Poll/Final)
- 명령 프레임(Command frame):
P 비트 = 1 → 상대측에게 응답(폴링)을 요청
- 응답 프레임(Response frame):
F 비트 = 1 → 요청에 대한 응답임을 표시
순번 번호(Sequence Number)
존재 위치:
- I-프레임(Information frame) 항상
- 일부 U-프레임(Unnumbered frame) 선택적으로
크기:
- 가변 길이, 바이트(Octet) 단위
- 반드시 정수 바이트 수를 가져야 함
프레임 검사 부호 필드(Frame Check Sequence, FCS)
역할: 프레임(Flag 제외) 전체 비트에 대한 오류 검출 코드
기본 형식: 16비트 CRC-CCITT
선택 형식:
- 32비트 CRC-32 사용 가능
- (프레임 길이 또는 전송로 신뢰도에 따라 선택)
HDLC Commands and Responses
HDLC 명령/응답 중 주요 프레임 타입 및 서브타입
감독 프레임(Supervisory, S-frames)
- Receive Ready (RR)
- Receive Not Ready (RNR)
- Reject (REJ) : N(R) 이전 번호로 되돌아가 재전송 요청
- Selective Reject (SREJ) : 특정 프레임만 선택 재전송 요청
번호 없는(Unnumbered, U-frames)
- SNRM / SNRME : NRM 모드 설정 (7비트 시퀀스 번호 확장)
- SARM / SARME : ARM 모드 설정
- SABM / SABME : ABM 모드 설정
- SIM : 초기화 모드 설정
HDLC Operation
HDLC 동작
초기화(Initialization)
- 초기화 요청을 상대측에 알림
- NRM·ABM·ARM 중 사용할 모드(NRM/ABM/ARM) 선택
- 사용할 시퀀스 번호 비트 폭(3비트 vs 7비트) 결정
데이터 전송(Data Transfer)
- I-프레임의 N(S)/N(R) 필드로 순차 번호를 부여
- 순서 제어·오류 제어(ARQ) 모두 I-프레임에 결합
(‘RR’ 프레임은 반대 방향에 데이터가 없을 때 사용)
해제(Disconnect)
- 자체 이벤트(오류 발생 등)나 상위 계층 요청으로 연결 해제 시작
- DISC 프레임 전송 → 상대측에서 UA(수락) 응답
- 미확인된 I-프레임은 손실될 수 있으며, 복구는 상위 계층 책임