데이터 링크 계층은 네트워크에서 두 호스트 간 안정적인 데이터 전송을 보장하기 위한 다양한 기능을 수행한다. 이 글에서는 그중에서도 오류 제어와 흐름 제어를 효과적으로 수행하는 슬라이딩 윈도우 프로토콜과 고급 데이터 링크 제어 방식인 HDLC(High-level Data Link Control) 프로토콜에 대해 정리한다.
1. 슬라이딩 윈도우 프로토콜
슬라이딩 윈도우 프로토콜(Sliding Window Protocol)은 양방향 통신을 지원하며, 오류 제어와 흐름 제어 기능을 모두 포함하는 전송 방식이다. 여러 개의 프레임을 한꺼번에 전송하고, 수신자의 응답에 따라 윈도우를 조정하는 방식으로 효율적인 데이터 전송이 가능하다.
1) 기본 원리
슬라이딩 윈도우 프로토콜의 동작 과정은 다음과 같다.
- 송신 호스트는 각 프레임에 순서 번호(sequence number)와 오류 검출 코드를 포함하여 정보 프레임을 생성하고 순차적으로 전송한다.
- 수신 호스트는 수신한 프레임에 대해 현재 정상적으로 수신한 프레임의 번호가 아닌, 다음에 수신되기를 기대하는 순서 번호를 응답한다.
- 송신 측은 아직 응답을 받지 못한 프레임들을 송신 윈도우에서 관리하며, 이를 통해 중복 전송을 방지하고 오류 발생 시 재전송할 수 있다.
- 수신 측 또한 수신 윈도우를 사용하여 수신 가능한 프레임을 관리하며, 그 크기는 사용하는 방식에 따라 달라진다.
- 선택적 재전송(Selective Retransmission) 방식에서는 수신 윈도우의 크기가 송신 윈도우와 동일하다.
- 고백 N(Go-Back-N) 방식에서는 수신 윈도우의 크기가 1로 제한된다.
2) 순서 번호와 윈도우 크기
- 순서 번호는 각 프레임에 부여되는 고유 번호로, 0부터 특정 최대값까지 순환 방식으로 사용된다.
- 일반적으로 순서 번호의 범위는 2ⁿ 개이며, 이때 n은 순서 번호를 표현하는 비트 수이다.
- 순서 번호의 최대값은 송신 윈도우의 크기보다 커야 하며, 이를 통해 프레임의 중복이나 누락 없이 안정적인 전송이 가능하다.
- 윈도우 크기란 수신 호스트로부터 긍정 응답을 받지 않고도 송신 측이 연속으로 전송할 수 있는 최대 프레임 수를 의미한다. 이 값이 클수록 더 많은 데이터를 ACK 없이 전송할 수 있어 효율이 높아지지만, 오류 발생 시 재전송 부담이 증가할 수 있다.
3) 흐름 제어
슬라이딩 윈도우 프로토콜은 송신자와 수신자 간의 처리 속도 차이를 고려하여 데이터를 조절하는 흐름 제어 기능을 수행한다. 예를 들어, 송신 윈도우의 크기가 3이라면, 송신자는 최대 3개의 프레임을 연속 전송할 수 있으며, 이 중 하나라도 ACK를 받으면 해당 윈도우는 앞으로 이동하여 새로운 프레임 전송이 가능해진다.
(a): 송신 윈도우의 최대 크기를 3으로 했을 때 슬라이딩 윈도우 프로토콜의 동작 과정으로 0,1,2번
의 정보 프레임을 전송한 후에, 아직 해당 정보 프레임에 대한 ACK 프레임을 받지 못한 경우이다.
[3번을 전송하려면 0번에 대한 긍정 응답 처리가 완료되어야 한다]
(b) : 수신 호스트로부터 0번에 대한 ACK 프레임이 돌아오면 프레임 처리가 완료된 것으로 1,2번만
존재한다.
(c) : 윈도우의 최대 크기가 3이므로 3번 프레임을 전송할 수 있다.
(d) : a, b, 와 같은 수순을 밟음
(f) : 2,3번 프레임에 대한 ACK 프레임이 도착한 직후로 이후에는 5,6번을 전송할 수 있다.
[9까지 가면 다시 0부터 쭉]
4) 연속형 전송 (Pipelining)
정지-대기 방식에서는 송신 윈도우 크기가 1이므로, 매 프레임마다 수신자의 응답을 기다려야 한다. 반면, 연속형 전송은 ACK를 기다리지 않고 여러 프레임을 연속적으로 전송할 수 있으므로, 전송 효율이 높아진다.
이 방식은 네트워크 환경이 안정적일수록 효과적이며, 오류가 발생할 경우 다음 두 가지 방법 중 하나로 복구가 이루어진다.
- 고백 N 방식: 오류가 발생한 프레임을 포함하여 그 이후에 전송된 모든 프레임을 다시 전송한다.
고백 N(Go-Back-N) 방식
- 선택적 재전송 방식: 오류가 발생한 프레임만 선별적으로 재전송한다. 이 방식은 전송 효율이 높지만 구현이 복잡하다.
선택적 재전송(Selective Retransmission )방식
5) 피기배킹 (Piggybacking)
피기배킹은 데이터 프레임을 전송하면서 동시에 수신 응답(ACK)을 포함하여 전송하는 기술이다. 이를 통해 별도의 ACK 프레임을 보내지 않아도 되므로 전송 효율이 향상된다.
- 피기배킹을 사용하지 않을 경우, 각 프레임에 대해 별도의 ACK 혹은 NAK 프레임이 전송된다.
- 피기배킹을 사용하는 경우, 프레임은 I(i, j) 형식으로 표현되며,
- i는 현재 전송 중인 데이터의 순서 번호
- j는 마지막으로 제대로 수신한 프레임 번호를 의미한다.
피기배킹을 사용하지 않는 경우 피기배킹을 사용하는 경우
2. HDLC 프로토콜
HDLC(High-level Data Link Control) 프로토콜은 고급 데이터 링크 제어 프로토콜로, 신뢰성 있는 데이터 전송을 위해 다양한 통신 방식과 제어 프레임 구조를 제공한다.
1) 개요
HDLC는 일대일 또는 일대다 통신 환경에서 데이터 송수신을 위한 프레임 구조와 절차를 정의한다. 통신 참여자는 다음 세 가지 형태로 나뉜다.
- 주국(Primary Station): 명령을 전송하는 역할을 수행한다.
- 종국(Secondary Station): 응답만 수행하는 수동적인 호스트이다.
- 혼합국(Combined Station): 명령과 응답 모두를 처리할 수 있는 기능을 가진 호스트이다.
2) 프레임 구조
HDLC 프레임은 시작과 끝을 구분하기 위해 플래그 비트 01111110으로 구분되며, 다음과 같은 구성 요소를 포함한다.
- Address 필드: 수신 대상 호스트를 식별하는 용도로 사용된다.
- Control 필드: 프레임의 종류를 나타내며, 정보 프레임인지, 응답 프레임인지 등을 구분한다.
- Data 필드: 전송할 실제 데이터가 담기는 영역으로, 가변 길이를 가질 수 있다.
- Checksum 필드: 전송 오류를 검출하기 위한 영역으로, 일반적으로 CRC 방식이 사용된다.
3) 프레임 종류
HDLC에서는 전송 목적에 따라 다음과 같은 세 가지 프레임을 사용한다.
(1) 정보 프레임(Information Frame)
- 데이터 전송을 담당하며, 3비트 슬라이딩 윈도우 프로토콜을 기반으로 동작한다.
- 순서 번호는 0부터 7까지의 값을 순환하여 사용한다.
- 주요 필드는 다음과 같다.
- Seq: 전송 중인 데이터의 순서 번호
- Next: 피기배킹을 통해 응답하는 마지막 수신된 프레임의 번호
- P/F 비트: 1일 경우, 명령 프레임에서는 Poll(폴링) 의미, 응답 프레임에서는 Final(종결) 의미를 갖는다.
(2) 감독 프레임(Supervisor Frame)
- 정보 프레임에 대한 응답 기능을 수행하며, 긍정 응답(ACK)과 부정 응답(NAK) 등으로 구성된다.
(3) 비번호 프레임(Unnumbered Frame)
- 순서 번호가 없는 특수 기능용 프레임이며, 다양한 제어 기능을 수행한다.
종류는 다음과 같다.
- SABM: 비동기 균형 모드(ABM) 연결 설정 요청
- SNRM: 정규 응답 모드(NRM) 연결 설정 요청
- SARM: 비동기 응답 모드(ARM) 연결 설정 요청
- DISC: 연결 해제 요청
- RSET: 연결 상태 초기화
- FRMR: 잘못된 프레임 수신 시 거부
- UA: 비번호 프레임에 대한 응답
4) LAP와 LAPB 프로토콜
- LAP (Link Access Protocol): HDLC에서 정의된 하위 프로토콜로, 주국이 SARM 명령을 전송하고 종국이 UA 응답을 회신함으로써 연결이 설정된다. 이 방식은 비동기 응답 모드(ARM)로 동작한다.
- LAPB (Link Access Protocol - Balanced): 양쪽 호스트 모두 혼합국으로 동작할 수 있으며, 어느 한쪽이든 먼저 명령을 보낼 수 있다. 더욱 유연한 통신이 가능하다.
요약
- 슬라이딩 윈도우 프로토콜은 오류 제어와 흐름 제어를 함께 지원하는 방식으로, 여러 프레임을 ACK 없이 전송할 수 있어 효율적이다.
- 선택적 재전송 방식에서는 오류가 발생한 프레임만 다시 전송하며, 고백 N 방식에서는 오류 발생 이후의 모든 프레임을 재전송한다.
- 피기배킹은 응답 정보를 데이터 프레임에 포함시켜 전송 효율을 극대화하는 기법이다.
- HDLC 프로토콜은 정보, 감독, 비번호 프레임의 구조를 통해 다양한 통신 환경에서 유연하게 동작하며, LAP와 LAPB 같은 하위 프로토콜을 통해 모드 전환과 연결 관리를 지원한다.