Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

슬라이딩 윈도우 알고리즘 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.14 21:22

슬라이딩 윈도우 알고리즘

이름

슬라이딩 윈도우 알고리즘

분류

네트워크 및 통신 알고리즘

주요 용도

흐름 제어, 혼잡 제어, 데이터 전송 최적화

핵심 개념

송신자와 수신자 간의 윈도우 크기를 동적으로 조절

동작 방식

ACK 확인에 따라 윈도우를 슬라이딩하며 이동

주요 프로토콜

TCP

상세 정보

윈도우 크기

한 번에 전송할 수 있는 데이터 세그먼트의 최대 수

송신 윈도우

송신 측에서 ACK를 기다리지 않고 전송할 수 있는 데이터 범위

수신 윈도우

수신 측의 버퍼 여유 공간에 따라 결정되는 윈도우 크기

슬라이딩 동작

ACK가 도착하면 윈도우가 앞으로 이동하여 새로운 데이터 전송 가능

혼잡 윈도우

네트워크 혼잡을 고려하여 조정되는 윈도우 크기

Go-Back-N

슬라이딩 윈도우를 사용하는 ARQ 방식 중 하나

선택적 재전송

손실된 프레임만 선택적으로 재전송하는 방식

혼잡 제어 알고리즘

슬로우 스타트, 혼잡 회피, 빠른 회복 등과 연동

효과

대역폭 활용도 향상, 전송 지연 감소, 패킷 손실 최소화

응용 분야

스트리밍, 파일 전송, 실시간 통신

1. 개요

슬라이딩 윈도우 알고리즘은 네트워크 통신, 특히 데이터 링크 계층과 전송 계층에서 데이터의 신뢰성 있는 전송과 효율적인 흐름 제어를 동시에 달성하기 위해 사용되는 핵심 기법이다. 이 알고리즘은 송신자가 수신자의 확인 응답을 기다리지 않고 연속적으로 여러 프레임 또는 세그먼트를 전송할 수 있게 하여, 회선의 이용률을 극대화한다. 기본 아이디어는 '윈도우'라는 개념을 도입하여, 현재 전송 가능하거나 수신 대기 중인 데이터의 범위를 동적으로 관리하는 데 있다.

슬라이딩 윈도우의 주요 목적은 두 가지이다. 첫째는 흐름 제어로, 수신자의 처리 능력을 초과하는 데이터 전송을 방지하여 버퍼 오버플로를 막는다. 둘째는 오류 제어로, 패킷 손실이나 오류가 발생한 프레임을 효율적으로 재전송하는 메커니즘을 제공한다. 이 알고리즘은 TCP와 HDLC를 비롯한 많은 주요 통신 프로토콜의 기반이 되었다.

동작 방식은 송신자와 수신자가 각각 윈도우를 유지하는 것이다. 송신 윈도우는 확인 응답을 받지 않은 채 전송될 수 있는 데이터의 시퀀스 번호 범위를 정의한다. 수신자가 데이터를 성공적으로 수신하고 확인 응답을 보내면, 이 윈도우는 '슬라이딩'하여 앞으로 이동하며, 새로운 데이터의 전송이 가능해진다. 이 과정은 연속적이기 때문에 전송 지연이 크게 줄어들고, 네트워크의 처리량이 향상된다.

2. 기본 원리

슬라이딩 윈도우 알고리즘의 기본 원리는 송신 측과 수신 측이 각각 유지하는 윈도우를 통해 데이터의 흐름과 신뢰성을 관리하는 것이다. 이 윈도우는 송신 가능한 또는 수신 가능한 데이터 패킷의 범위를 정의하며, 확인 응답을 받음에 따라 이 범위가 앞으로 "슬라이딩"되면서 이동한다. 핵심 목표는 전송 매체를 최대한 활용하여 효율적인 전송률을 달성하는 동시에, 수신 측의 처리 능력을 초과하지 않도록 흐름 제어를 수행하는 것이다.

이 원리는 크게 두 가지 핵심 요소로 구성된다. 첫째는 윈도우 크기와 이동이다. 송신 윈도우 크기는 확인 응답을 기다리지 않고 한 번에 전송할 수 있는 최대 데이터 양을 결정한다. 예를 들어, 윈도우 크기가 4라면, 0번부터 3번까지의 패킷을 연속으로 보낼 수 있다. 수신 측으로부터 0번 패킷에 대한 확인 응답이 도착하면, 송신 윈도우는 한 칸 이동하여 1번부터 4번 패킷을 새로운 전송 가능 범위로 삼는다. 이렇게 윈도우가 미확인 패킷 영위를 따라 슬라이드하며 이동하는 구조가 알고리즘의 이름이 된 이유이다.

둘째는 시퀀스 번호와 확인 응답이다. 각 데이터 패킷에는 고유한 시퀀스 번호가 부여되어 순서를 식별한다. 수신 측은 패킷을 정상적으로 수신하면, 다음에 기대하는 시퀀스 번호를 담은 확인 응답을 송신 측에 보낸다. 이는 특정 패킷까지 모두 올바르게 수신했음을 의미하는 누적 확인 응답 방식이다. 아래 표는 윈도우 크기 3을 가정한 간단한 동작 예시이다.

송신 패킷 시퀀스

송신 윈도우 범위

수신 확인 응답

수신 윈도우 범위

0, 1, 2 전송

0, 1, 2

(대기 중)

0, 1, 2

ACK 1 수신 (패킷 0까지 성공)

1, 2, 3

다음엔 패킷 1을 기대

1, 2, 3

패킷 3 전송

1, 2, 3

(대기 중)

1, 2, 3

ACK 3 수신 (패킷 1,2,3까지 성공)

4, 5, 6

다음엔 패킷 4를 기대

4, 5, 6

이러한 원리를 통해, 송신 측은 수신 측의 처리 속도에 맞춰 데이터를 지속적으로 전송할 수 있으며, 전이중 통신 환경에서 대역폭을 효율적으로 사용할 수 있다. 또한, 패킷 손실이나 지연이 발생했을 때 윈도우 내의 미확인 패킷들에 대해 재전송을 수행하는 오류 제어의 기반이 되기도 한다.

2.1. 윈도우 크기와 이동

슬라이딩 윈도우 알고리즘의 핵심은 송신자가 확인 응답을 기다리지 않고 전송할 수 있는 데이터의 범위, 즉 윈도우를 정의하고 이를 이동시키는 데 있다. 윈도우는 시퀀스 번호로 식별되는 프레임 또는 세그먼트의 연속된 집합으로 표현된다. 윈도우 내에 있는 모든 데이터는 확인 응답 없이 한꺼번에 전송될 수 있으며, 이는 정지-대기 프로토콜의 비효율성을 극복하는 기반이 된다.

윈도우의 크기는 네트워크와 수신자의 처리 능력을 반영한다. 크기가 너무 작으면 대역폭을 충분히 활용하지 못하고, 너무 크면 수신자의 버퍼를 넘치게 하거나 네트워크에 과부하를 줄 수 있다. 윈도우는 수신자로부터 긍정 확인 응답을 받은 데이터에 따라 앞으로 이동한다. 예를 들어, 윈도우 크기가 4이고 시퀀스 번호 0, 1, 2, 3의 데이터를 전송했다면, 수신자가 시퀀스 번호 0에 대한 확인 응답을 보내면 윈도우는 한 칸 이동하여 이제 시퀀스 번호 1, 2, 3, 4의 데이터를 전송할 수 있게 된다.

윈도우의 상태는 일반적으로 세 부분으로 나뉜다.

구분

설명

전송 및 확인 완료

수신자로부터 ACK를 받은 데이터. 윈도우의 왼쪽 경계 밖에 위치한다.

전송되었으나 미확인

윈도우 내 왼쪽 부분. 전송은 했지만 확인 응답을 기다리는 데이터이다.

전송 가능

윈도우 내 오른쪽 부분. 아직 전송되지 않았지만 즉시 보낼 수 있는 데이터이다.

윈도우의 이동은 수신자의 확인 응답에 의해 주도된다. 누적 확인 응답 방식을 사용하는 TCP에서는 특정 시퀀스 번호까지의 모든 데이터가 올바르게 수신되었음을 알리는 ACK를 받으면, 윈도우의 시작 위치가 해당 번호 다음으로 이동한다. 이 과정에서 윈도우의 크기는 네트워크 상태에 따라 동적으로 조정될 수 있으며, 이를 통해 흐름 제어와 혼잡 제어가 동시에 이루어진다.

2.2. 시퀀스 번호와 확인 응답

각 데이터 프레임이나 세그먼트에는 고유한 시퀀스 번호가 할당됩니다. 이 번호는 데이터의 순서를 식별하고, 중복 수신이나 손실을 감지하는 데 사용됩니다. 송신자는 윈도우 내의 프레임을 전송하고, 수신자는 이를 성공적으로 수신하면 확인 응답(ACK)을 보내어 다음에 기대하는 시퀀스 번호를 알립니다.

확인 응답은 누적 방식으로 동작할 수 있습니다. 예를 들어, 수신자가 시퀀스 번호 N에 대한 ACK를 보내면, 이는 N번까지의 모든 데이터가 정상적으로 수신되었음을 의미합니다[1]. 일부 프로토콜에서는 선택적 확인응답(SACK)을 사용하여 특정 구간의 수신 성공을 개별적으로 보고하기도 합니다.

시퀀스 번호 공간은 유한하므로 순환 구조를 가집니다. 따라서 윈도우 크기는 시퀀스 번호 공간의 크기보다 작거나 같아야 합니다. 그렇지 않으면 서로 다른 두 프레임이 동일한 시퀀스 번호를 가져 구별할 수 없는 상황이 발생할 수 있습니다.

용어

역할

비고

시퀀스 번호

데이터 단위의 순서 및 식별

유한한 비트로 표현되며 순환함

확인 응답(ACK)

데이터 성공 수신 통지

누적 ACK 또는 선택적 ACK(SACK) 방식 사용

NAK(Negative ACK)

오류 수신 통지

모든 프로토콜이 사용하는 것은 아님

이 메커니즘을 통해 송신자는 수신자의 상태를 파악하고, 확인 응답을 받은 프레임은 송신 윈도우에서 제외하여 새로운 프레임의 전송 공간을 확보합니다.

3. 주요 프로토콜

TCP는 전송 계층에서 가장 널리 사용되는 프로토콜로, 신뢰성 있는 데이터 전송을 위해 슬라이딩 윈도우 방식을 핵심 메커니즘으로 채택한다. TCP의 슬라이딩 윈도우는 흐름 제어와 혼잡 제어를 모두 수행하는 복합적인 구조이다. 송신자와 수신자는 각각 자신의 송신 윈도우와 수신 윈도우를 유지하며, 확인응답(ACK)과 시퀀스 번호를 통해 윈도우를 이동시킨다. TCP 헤더의 '윈도우 크기' 필드는 수신자의 현재 수용 가능한 버퍼 공간을 알려주어, 송신자가 과도한 데이터를 보내는 것을 방지한다[2].

HDLC(High-Level Data Link Control)는 데이터 링크 계층의 대표적인 프로토콜로, 슬라이딩 윈도우를 사용한 오류 제어를 제공한다. HDLC 및 이를 기반으로 한 PPP(Point-to-Point Protocol)나 프레임 릴레이와 같은 프로토콜들은 주로 Go-Back-N ARQ 또는 Selective Repeat ARQ 방식을 구현한다. 이들 프로토콜에서 윈도우 크기는 일반적으로 고정되어 있으며, 프레임 단위로 시퀀스 번호를 관리한다. 데이터 링크 계층의 슬라이딩 윈도우는 전송 계층과 달리 주로 점대점 링크에서의 효율적이고 신뢰성 있는 프레임 전달에 초점을 맞춘다.

다른 주요 프로토콜들의 슬라이딩 윈도우 구현 특성을 비교하면 다음과 같다.

프로토콜

계층

주요 목적

윈도우 크기 특징

TCP

전송 계층

신뢰적 전송, 흐름/혼잡 제어

동적 변경 (수신자 윈도우 & 혼잡 윈도우)

HDLC

데이터 링크 계층

신뢰적 프레임 전달, 오류 제어

일반적으로 고정

PPP

데이터 링크 계층

프레임 구성, 오류 감지

연결 설정 시 협상 가능

3.1. TCP의 슬라이딩 윈도우

TCP는 전송 계층에서 신뢰성 있는 연결 지향형 통신을 제공하기 위해 슬라이딩 윈도우 알고리즘을 핵심 메커니즘으로 사용한다. TCP의 슬라이딩 윈도우는 흐름 제어와 혼잡 제어라는 두 가지 주요 목적을 동시에 수행한다. 흐름 제어는 수신자의 처리 능력을 초과하지 않도록 데이터 전송 속도를 조절하는 반면, 혼잡 제어는 네트워크의 혼잡을 방지하고 대역폭을 효율적으로 활용하는 데 중점을 둔다.

TCP 연결에서 각 측은 자신의 송신 윈도우와 수신 윈도우를 유지 관리한다. 송신 윈도우의 크기는 수신자가 통지한 수신 윈도우 크기와 송신자가 추정한 혼잡 윈도우 크기 중 더 작은 값에 의해 결정된다[3]. 윈도우 내의 데이터는 시퀀스 번호로 식별되며, 수신자는 연속적으로 올바르게 수신된 데이터에 대해 확인 응답을 보낸다. 확인 응답이 도착함에 따라 윈도우는 앞으로 "슬라이드"하여 새로운 데이터의 전송을 허용한다.

TCP의 슬라이딩 윈도우 구현은 누적 확인 응답 방식을 사용한다. 이는 특정 시퀀스 번호까지의 모든 데이터가 정상 수신되었음을 암시적으로 확인하는 방식이다. 예를 들어, 수신자가 시퀀스 번호 500에 대한 ACK를 보내면, 번호 500 미만의 모든 데이터가 성공적으로 전달되었음을 의미한다. 이를 통해 단일 확인 응답으로 여러 패킷의 수신을 확인할 수 있어 네트워크 오버헤드를 줄인다. 또한, 지연된 확인 응답 및 선택적 확인 응답과 같은 최적화 기법을 함께 사용하여 성능을 향상시킨다.

특징

설명

이중 목적

흐름 제어와 혼잡 제어를 통합하여 관리한다.

윈도우 결정

윈도우 크기 = min(수신자 공지 윈도우, 혼잡 윈도우)

확인 방식

주로 누적 확인 응답을 사용하며, 선택적 확인 응답(SACK)을 옵션으로 지원한다.

동적 조정

네트워크 상태(지연, 손실)에 따라 혼잡 윈도우 크기를 지속적으로 조정한다(예: 슬로우 스타트, 혼잡 회피 알고리즘).

3.2. HDLC 및 기반 프로토콜

HDLC(High-Level Data Link Control)는 ISO(국제표준화기구)에서 표준화한 비트 지향적 데이터 링크 계층 프로토콜이다. 이 프로토콜은 슬라이딩 윈도우 기법을 핵심 메커니즘으로 채택하여 신뢰성 있는 전이중 통신을 제공한다. HDLC의 프레임 구조는 플래그, 주소, 제어, 정보, FCS(프레임 검사 시퀀스) 필드로 구성되며, 제어 필드에서 시퀀스 번호와 확인 응답 번호를 관리하여 슬라이딩 윈도우 동작을 제어한다.

HDLC는 여러 동작 모드를 지원하는데, 주로 비균형 응답 모드(NRM)와 비동기 균형 모드(ABM)에서 슬라이딩 윈도우가 활용된다. 특히 ABM 모드는 피어 투 피어 통신에 적합하며, 각 스테이션이 동등한 지위에서 데이터 전송과 관리를 수행한다. HDLC의 슬라이딩 윈도우 구현은 Go-Back-N ARQ 방식을 기본으로 하여 오류 제어를 수행한다.

HDLC를 기반으로 한 여러 프로토콜이 발전했다. 대표적인 예는 다음과 같다.

프로토콜

설명

주요 사용처

LAPB(Link Access Procedure, Balanced)

X.25 네트워크의 데이터 링크 계층 프로토콜로, HDLC의 ABM 모드를 채용했다.

패킷 교환망

LAPD(Link Access Procedure on the D-channel)

ISDN의 D 채널 신호 전송을 위해 사용되는 프로토콜이다.

ISDN

LLC(Logical Link Control)

IEEE 802.2 표준의 일부로, 이더넷과 같은 LAN 환경에서 HDLC 프레임 형식을 변형하여 사용한다.

지역 영역 네트워크

PPP(Point-to-Point Protocol)

점대점 링크에서 사용되며, HDLC 프레임 형식을 차용하지만 더 간소화된 프로토콜이다.

인터넷 접속

이러한 프로토콜들은 HDLC의 기본 프레임 구조와 슬라이딩 윈도우 원리를 공유하면서도, 특정 네트워크 환경(예: 광역망, 신호 채널, 지역망, 점대점 링크)에 맞게 기능을 확장하거나 간소화했다. 이들은 신뢰적인 데이터 전달을 보장하기 위해 윈도우 크기를 관리하고, 확인 응답(ACK) 및 부정 확인 응답(NAK)을 교환하며, 프레임 손실이나 오류 발생 시 재전송을 수행하는 공통된 메커니즘을 가진다.

4. 흐름 제어

흐름 제어는 데이터 송신자가 수신자의 처리 능력을 초과하는 속도로 데이터를 전송하지 않도록 조절하는 메커니즘이다. 슬라이딩 윈도우 알고리즘은 이 목적을 달성하기 위한 핵심적인 방법으로 사용된다. 수신자는 자신의 버퍼 여유 공간을 나타내는 윈도우 크기(수신 윈도우)를 송신자에게 알려주고, 송신자는 이 크기 내에서만 데이터 프레임이나 세그먼트를 전송할 수 있다. 이를 통해 수신자가 처리하지 못할 정도로 많은 데이터가 도착하여 버퍼 오버플로우가 발생하고 데이터가 손실되는 것을 방지한다.

흐름 제어는 주로 수신자 측의 상태에 기반하여 이루어진다. 수신자는 확인 응답(ACK) 메시지에 현재의 수신 윈도우 크기를 포함시켜 송신자에게 통보한다. 송신자는 자신의 송신 윈도우 크기를 이 통보된 값과 네트워크 혼잡 윈도우 크기 중 더 작은 값으로 설정하여 데이터 전송 속도를 제한한다. 이 과정은 동적이며, 수신 애플리케이션이 데이터를 소비하는 속도에 따라 수신 윈도우 크기가 지속적으로 업데이트된다.

제어 유형

기반

주요 목표

조절 요소

흐름 제어

수신자 상태

수신자 버퍼 오버플로 방지

수신 윈도우 크기

혼잡 제어

네트워크 상태

네트워크 혼잡 방지

혼잡 윈도우 크기

흐름 제어와 혼잡 제어는 밀접한 관계를 가지지만 목적이 다르다. 혼잡 제어는 네트워크 자체의 포화 상태를 방지하는 데 목적이 있는 반면, 흐름 제어는 특정 수신 호스트의 처리 능력에 초점을 맞춘다. 그러나 두 메커니즘은 종종 함께 동작한다. 예를 들어, TCP에서는 송신자가 실제로 사용할 수 있는 윈도우 크기를 min(수신자 공지 윈도우, 혼잡 윈도우) 공식으로 결정한다. 이는 네트워크와 수신자 모두를 고려한 종합적인 전송 속도 조절을 가능하게 한다.

4.1. 수신자 기반 제어

수신자 기반 제어는 슬라이딩 윈도우 알고리즘을 활용한 흐름 제어 방식 중 하나로, 데이터 수신 측이 송신 측의 데이터 전송 속도를 직접 제어하는 메커니즘이다. 이 방식의 핵심은 수신자가 자신의 현재 처리 능력과 버퍼 여유 공간에 기반하여 송신자에게 허용 가능한 윈도우 크기를 지속적으로 알려주는 것이다. 수신자는 확인 응답 패킷에 포함된 수신 윈도우 필드를 통해 "더 많은 데이터를 받을 수 있다" 또는 "전송을 일시 중지하라"는 신호를 보낸다.

구체적인 동작 과정은 다음과 같다. 송신자는 수신자로부터 받은 최신 수신 윈도우 크기 값을 기준으로 자신의 송신 윈도우를 설정한다. 이 값은 수신자의 애플리케이션이 데이터를 소비하는 속도와 수신 측 운영체제의 버퍼 여유량에 따라 동적으로 변한다. 예를 들어, 수신자 버퍼가 가득 차면 수신 윈도우 크기는 0이 되고, 송신자는 이를 확인하면 새로운 데이터 전송을 중단한다. 이후 수신자가 데이터를 처리해 버퍼 공간이 생기면, 다음 확인 응답에 새로운 윈도우 크기를 담아 보내 송신자의 전송을 재개하게 한다.

이 방식은 송신자 기반 제어보다 효율적이다. 송신자가 수신자의 상태를 추측하지 않고 명시적인 피드백을 받아 행동하므로, 불필요한 패킷 손실이나 네트워크 혼잡을 초래할 위험이 줄어든다. 특히 TCP 프로토콜에서 이 방식을 사용하며, TCP 헤더의 'Window' 필드가 바로 수신 윈도우의 크기를 바이트 단위로 전달하는 역할을 한다[4]. 수신 윈도우 크기는 혼잡 윈도우 크기와 함께 송신 측의 실제 전송량을 결정하는 주요 요소가 된다.

특징

설명

제어 주체

데이터 수신자

피드백 채널

확인 응답(ACK) 패킷의 헤더 필드

주요 정보

수신 윈도우(RWND) 크기

장점

수신자 상태에 따른 정확한 제어, 네트워크 자원 낭비 감소

단점

피드백 지연으로 인한 처리량 저하 가능성

수신자 기반 제어는 End-to-End 원리를 잘 반영한다. 최종 데이터 소비자의 처리 능력을 송신 출발지에 직접 전달함으로써, 네트워크 중간 노드의 상태만으로는 파악하기 어려운 진정한 수신 부하를 관리할 수 있다. 이는 혼잡 제어가 네트워크의 포화 상태를 관리하는 것과 구별되며, 두 메커니즘이 협력하여 전체 시스템의 효율성을 높인다.

4.2. 혼잡 제어와의 관계

혼잡 제어는 네트워크의 전반적인 부하를 관리하여 패킷 손실과 과도한 지연을 방지하는 메커니즘이다. 이는 슬라이딩 윈도우를 통한 흐름 제어와 밀접하게 연동되어 작동하지만, 그 목표와 작동 수준이 다르다. 흐름 제어가 수신자의 처리 능력에 맞춰 송신 속도를 조절하는 수신자 중심의 기법이라면, 혼잡 제어는 네트워크 경로 상의 라우터나 링크의 포화 상태를 감지하고 이를 완화하는 네트워크 중심의 기법이다.

TCP 프로토콜에서는 슬라이딩 윈도우 크기가 두 가지 요소에 의해 동적으로 결정된다. 하나는 수신자가 알려주는 수신 윈도우 크기이고, 다른 하나는 송신자가 네트워크 상태를 추정하여 계산하는 혼잡 윈도우 크기이다. 최종적인 송신 윈도우 크기는 이 두 값 중 더 작은 값을 사용한다. 이는 수신자의 버퍼 용량과 네트워크의 수용 능력 모두를 초과하지 않도록 이중으로 보장하는 역할을 한다. 혼잡 윈도우는 패킷 손실(타임아웃 또는 중복 ACK 수신)을 혼잡 발생의 주요 신호로 간주하고, 그 크기를 급격히 줄인 후 점진적으로 회복시키는 알고리즘(예: TCP Reno, TCP Cubic)에 의해 관리된다.

따라서 슬라이딩 윈도우는 혼잡 제어를 구현하는 핵심적인 프레임워크를 제공한다. 윈도우 크기라는 하나의 변수를 통해, 네트워크의 혼잡 상태에 따른 전송률 조절을 효과적으로 수행할 수 있다. 이 둘의 협력 관계는 효율적이고 공정한 네트워크 자원 활용의 기초가 된다.

제어 유형

주 목표

주요 제어 매개변수

작동 주체

흐름 제어

수신자 버퍼 오버플로 방지

수신 윈도우 (RWND)

수신자

혼잡 제어

네트워크 포화 및 패킷 손실 방지

혼잡 윈도우 (CWND)

송신자 (네트워크 상태 추정)

5. 오류 제어

오류 제어는 슬라이딩 윈도우 알고리즘의 핵심 기능 중 하나로, 전송 중 발생하는 프레임 손실이나 오류를 감지하고 복구하는 메커니즘을 제공합니다. 이는 신뢰성 있는 데이터 전송을 보장하기 위해 필수적입니다. 주요 방식으로는 Go-Back-N ARQ와 Selective Repeat ARQ가 있으며, 각각 다른 복구 전략과 효율성을 가집니다.

Go-Back-N ARQ 방식은 송신자가 오류가 발생한 프레임부터 이후에 전송한 모든 프레임을 재전송합니다. 수신자는 순차적인 시퀀스 번호를 기대하며, 오류가 발생한 프레임을 받으면 이를 버리고 이후 도착하는 정상 프레임도 모두 버립니다. 송신자는 일정 시간 내에 확인 응답을 받지 못하면 가장 오래된 미확인 프레임부터 윈도우 내의 모든 프레임을 재전송합니다. 이 방식은 구현이 간단하고 수신자 버퍼 관리가 용이하지만, 오류 발생 시 불필요한 재전송이 많아질 수 있어 채널 효율이 떨어질 수 있습니다.

반면, Selective Repeat ARQ 방식은 오류가 발생한 특정 프레임만을 선택적으로 재전송합니다. 수신자는 순서가 틀어져 도착한 프레임을 임시 버퍼에 저장하고, 누락된 프레임의 도착을 기다립니다. 모든 프레임이 정상적으로 수신되면 순서대로 상위 계층에 전달합니다. 이 방식은 Go-Back-N ARQ에 비해 채널 활용도가 높지만, 수신측에 순서 재조정을 위한 버퍼가 필요하고 구현 복잡도가 증가합니다. 두 방식의 선택은 대역폭, 지연 시간, 처리량 요구사항에 따라 결정됩니다.

특성

Go-Back-N ARQ

Selective Repeat ARQ

재전송 단위

오류 프레임 이후의 모든 프레임

오류가 발생한 특정 프레임만

수신자 버퍼

순차적 전달만 필요 (버퍼 요구 작음)

순서 재조정 필요 (버퍼 요구 큼)

구현 복잡도

상대적으로 낮음

상대적으로 높음

채널 효율

오류율이 높을 경우 낮아짐

오류율이 높아도 비교적 높게 유지

이러한 오류 제어 메커니즘은 흐름 제어와 함께 작동하여, 전송 계층 프로토콜인 TCP와 데이터 링크 계층 프로토콜의 신뢰성 기반을 형성합니다.

5.1. Go-Back-N ARQ

Go-Back-N ARQ는 슬라이딩 윈도우 알고리즘을 기반으로 하는 오류 제어 방식 중 하나이다. 이 방식은 송신자가 윈도우 크기만큼의 프레임을 확인 응답 없이 연속적으로 전송할 수 있도록 허용하지만, 오류가 발생한 프레임 이후의 모든 프레임을 재전송한다는 특징을 가진다.

동작 원리는 다음과 같다. 송신자는 시퀀스 번호를 가진 프레임을 윈도우 크기(N)만큼 전송한다. 수신자는 오류 없이 순서대로 도착한 프레임에 대해 확인 응답(ACK)을 보낸다. 만약 수신자가 예상치 못한 시퀀스 번호의 프레임(즉, 순서가 틀리거나 오류가 있는 프레임)을 받으면, 마지막으로 올바르게 수신된 프레임에 대한 ACK을 반복적으로 보낸다. 송신자는 특정 프레임에 대한 ACK을 받지 못하거나, 중복된 ACK을 일정 횟수 받으면, 해당 프레임부터 윈도우 내의 모든 후속 프레임을 다시 전송한다. 이때 "Go-Back-N"이라는 이름은 오류 발생 지점(N번째 프레임)으로 돌아가서 다시 전송한다는 의미에서 유래한다.

특징

설명

재전송 단위

오류 발생 프레임 및 이후 모든 미확인 프레임

수신자 버퍼

순차적 수신을 위해 1개의 프레임 버퍼만 필요[5]

장점

구현이 비교적 단순하고, 수신자 측 버퍼 관리가 용이함

단점

채널 효율이 낮을 수 있음, 특히 지연이 크거나 오류율이 높은 환경에서 불필요한 재전송이 많아짐

이 방식은 전송 효율성과 구현 복잡도 사이의 절충안이다. 대역폭과 지연 시간이 크지 않은 환경에서는 효과적이지만, 오류가 빈번한 환경에서는 성능이 저하된다. 이후 등장한 Selective Repeat ARQ는 이러한 비효율성을 개선하기 위해 오류난 프레임만 선택적으로 재전송하는 방식을 채택했다.

5.2. Selective Repeat ARQ

Selective Repeat ARQ는 Go-Back-N ARQ와 함께 슬라이딩 윈도우 기반의 주요 오류 제어 방식 중 하나이다. 이 방식은 전송 중 오류가 발생한 프레임만을 선택적으로 재전송한다는 특징을 가진다. 수신 측은 올바르게 수신된 프레임들을 순서에 관계없이 일시적으로 버퍼에 저장하고, 누락되거나 오류가 발생한 특정 프레임의 재전송만을 요청한다. 모든 후속 프레임을 폐기하고 재전송하는 Go-Back-N 방식에 비해 대역폭 활용 효율이 높지만, 구현 복잡도가 증가한다.

수신 측과 송신 측 모두 최대 윈도우 크기 N의 버퍼를 유지해야 한다. 수신 측은 시퀀스 번호가 순서대로 도착하지 않아도, 윈도우 범위 내의 정상 프레임은 모두 수락하여 버퍼링한다. 오류가 감지된 특정 프레임에 대해서는 NAK(Negative Acknowledgement) 패킷을 보내 재전송을 요청한다. 송신 측은 오류 프레임에 대한 NAK를 받거나 해당 프레임의 타이머가 만료되면, 그 특정 프레임만을 재전송한다. 모든 누적된 프레임이 순서대로 도착하면, 수신 측은 연속된 시퀀스 번호를 가진 프레임들을 상위 계층으로 전달하고 윈도우를 이동시킨다.

Selective Repeat의 성능은 윈도우 크기 설정에 크게 의존한다. 일반적으로 시퀀스 번호 공간이 2N보다 크거나 같아야 순서 번호의 혼동을 방지할 수 있다[6]. 이 방식은 지연 시간이 길거나 대역폭과 지연 곱이 큰 네트워크 환경에서 유리하다. 오류율이 높을수록 Go-Back-N 대비 처리량 우위가 두드러지지만, 개별 프레임에 대한 타이머 관리와 버퍼링으로 인한 메모리 오버헤드가 발생한다.

특성

설명

재전송 대상

오류 발생 또는 손실된 특정 프레임만

수신자 버퍼 필요

예 (윈도우 크기 N)

대역폭 효율성

일반적으로 높음 (특히 높은 오류율/긴 지연 환경)

구현 복잡도

상대적으로 높음 (개별 프레임 타이머, 순서 재조립)

적합 환경

높은 오류율, 긴 왕복 지연 시간(RTT)

따라서 Selective Repeat ARQ는 신뢰성 있는 데이터 전송이 요구되면서도 효율성을 중시하는 전송 계층 프로토콜이나 무선 통신 환경 등에 적용 원리로 활용된다.

6. 성능 최적화

성능 최적화의 핵심은 윈도우 크기를 네트워크 상태에 맞게 동적으로 조정하여 처리량을 극대화하고 지연을 최소화하는 것이다. 고정된 윈도우 크기는 대역폭 지연 곱(BDP, Bandwidth-Delay Product)이 변할 때 성능 저하를 초래할 수 있다. 이상적인 윈도우 크기는 송신자가 확인 응답을 받기 전까지 전송할 수 있는 데이터 양, 즉 BDP와 일치해야 한다. 이를 초과하면 불필요한 버퍼링과 혼잡을 유발하고, 미달하면 링크 대역폭을 완전히 활용하지 못하게 된다. 따라서 현대 TCP 구현체는 혼잡 윈도우와 수신자 공지 윈도우 중 작은 값을 윈도우 크기로 사용하며, 혼잡 윈도우는 혼잡 제어 알고리즘에 의해 지속적으로 조정된다.

지연 시간과 처리량은 서로 트레이드오프 관계에 있다. 작은 윈도우 크기는 지연을 줄이는 대신 처리량을 제한하며, 큰 윈도우 크기는 높은 처리량을 가능하게 하지만 버퍼링으로 인한 지연을 증가시킬 수 있다. 성능 최적화는 특정 응용 프로그램의 요구사항(예: 저지연 실시간 통신 vs. 대용량 파일 전송)에 맞춰 이 균형점을 찾는 과정이다. 또한, 왕복 지연 시간과 지터를 정확히 예측하는 것은 윈도우 크기 조정과 재전송 타이머 설정에 필수적이다.

최적화 요소

목표

주요 기법/고려사항

윈도우 크기 조정

대역폭 지연 곱(BDP) 맞춤

TCP 혼잡 제어 알고리즘(Tahoe, Reno, CUBIC), 대역폭 예측

지연 최소화

응답 시간 단축

작은 윈도우, Nagle 알고리즘 비활성화(실시간 트래픽), 확인 응답 지연 최소화

처리량 극대화

링크 활용도 최대화

큰 윈도우, 윈도우 스케일링(Window Scaling) 옵션 사용, 병렬 연결

자원 효율성

버퍼 및 CPU 사용 최적화

효율적인 버퍼 관리, 선택적 확인응답(SACK) 사용으로 불필요한 재전송 감소

성능은 오류 제어 방식의 선택에도 영향을 받는다. Go-Back-N ARQ는 구현이 간단하지만 단일 패킷 오류가 발생하면 윈도우 내 모든 패킷을 재전송해야 하므로 처리량이 급감할 수 있다. 반면, Selective Repeat ARQ는 오류가 발생한 특정 패킷만 재전송하여 효율성이 높지만, 수신 측에서 패킷을 순서대로 재조립하기 위한 더 복잡한 버퍼 관리와 시퀀스 번호 공간 관리가 필요하다. 따라서 고신뢰성과 고대역폭 환경에서는 Selective Repeat 방식이 일반적으로 더 우수한 성능을 보인다.

6.1. 윈도우 크기 조정

윈도우 크기 조정은 슬라이딩 윈도우 알고리즘의 성능을 최적화하기 위한 핵심 메커니즘이다. 네트워크의 상태, 즉 대역폭, 지연 시간, 혼잡 정도에 따라 동적으로 송신 윈도우의 크기를 늘리거나 줄이는 과정을 의미한다. 고정된 윈도우 크기는 네트워크 자원을 효율적으로 활용하지 못하거나, 반대로 오버플로를 일으킬 수 있으므로, 적응형 조정이 필수적이다.

조정은 주로 두 가지 목표를 위해 이루어진다. 첫째는 흐름 제어로, 수신자의 처리 능력을 초과하지 않도록 윈도우 크기를 제한하여 버퍼 오버런을 방지한다. 둘째는 혼잡 제어로, 네트워크 경로상의 병목 현상을 감지하고 윈도우 크기를 줄여 패킷 손실을 최소화한다. TCP에서는 혼잡 윈도우라는 개념을 도입하여 이 두 가지 목적을 함께 관리한다.

구체적인 조정 알고리즘은 프로토콜에 따라 다르다. 대표적인 예로 TCP의 혼잡 회피 알고리즘은 AIMD 방식을 사용한다. 네트워크가 정상적일 때는 윈도우 크기를 점진적으로 증가시키다가(혼잡 윈도우 크기를 1 MSS씩 선형 증가), 패킷 손실 등의 혼잡 신호를 감지하면 윈도우 크기를 급격히 줄인다(보통 절반으로 감소). 또한, 고속 네트워크 환경을 위한 TCP BBR과 같은 최신 알고리즘은 대역폭과 지연 시간을 직접 측정하여 윈도우 크기를 조정한다.

효과적인 윈도우 크기 조정의 결과는 처리량과 지연 시간에 직접적으로 반영된다. 이상적인 윈도우 크기는 대역폭 지연 곱에 해당하며, 이 크기를 유지할 때 네트워크 파이프라인이 꽉 차 있어 최대 처리량을 달성할 수 있다. 너무 작은 윈도우는 대역폭을 제대로 활용하지 못하게 하고, 너무 큰 윈도우는 과도한 큐잉 지연과 패킷 손실을 초래한다.

6.2. 지연 시간과 처리량

지연 시간은 데이터 패킷이 송신자에서 수신자까지 이동하고 확인 응답이 돌아오기까지 걸리는 총 시간을 의미한다. 이는 전파 지연, 전송 지연, 처리 지연, 큐잉 지연 등의 요소로 구성된다. 긴 지연 시간은 슬라이딩 윈도우 알고리즘의 성능에 직접적인 영향을 미친다. 특히, 대역폭-지연 곱은 네트워크 경로의 데이터 운반 능력을 나타내는 핵심 지표로, 이 값이 클수록 채워질 수 있는 데이터 양이 많아지며, 이를 효율적으로 활용하기 위해 윈도우 크기를 적절히 설정해야 한다.

처리량은 단위 시간당 성공적으로 전달된 데이터의 양을 측정한다. 슬라이딩 윈도우 알고리즘에서 처리량은 윈도우 크기와 지연 시간에 의해 결정된다. 이상적인 조건에서 최대 처리량은 윈도우 크기를 지연 시간 동안 전송할 수 있는 데이터 양(대역폭-지연 곱) 이상으로 설정했을 때 달성된다. 윈도우 크기가 너무 작으면 송신자가 확인 응답을 기다리는 유휴 시간이 길어져 대역폭을 제대로 활용하지 못하고 처리량이 저하된다.

지연 시간과 처리량의 관계는 다음 표를 통해 요약할 수 있다.

요소

처리량에 미치는 영향

최적화 방향

긴 지연 시간

확인 응답 대기 시간 증가로 처리량 감소

윈도우 크기를 대역폭-지연 곱 이상으로 확장

짧은 지연 시간

빠른 피드백 루프로 처리량 향상 가능

작은 윈도우 크기로도 효율적 운영 가능

부적절한 윈도우 크기

과소 시: 대역폭 미활용, 과대 시: 혼잡 또는 버퍼 오버플로우 유발

네트워크 상태를 반영한 동적 조정 필요

따라서 성능 최적화를 위해서는 네트워크의 현재 왕복 지연 시간과 대역폭을 추정하여 윈도우 크기를 동적으로 조정하는 메커니즘이 필수적이다. TCP의 혼잡 제어 알고리즘은 이러한 조정을 수행하는 대표적인 사례이다.

7. 응용 사례

슬라이딩 윈도우 알고리즘은 주로 OSI 모델의 데이터 링크 계층과 전송 계층에서 널리 적용되어, 신뢰성 있는 데이터 전송과 효율적인 대역폭 활용을 가능하게 한다.

데이터 링크 계층

데이터 링크 계층에서는 HDLC, PPP와 같은 프로토콜에서 슬라이딩 윈도우를 사용하여 프레임 단위의 오류 제어와 흐름 제어를 수행한다. 이 계층에서는 물리적으로 직접 연결된 두 노드 간의 통신을 관리하며, Go-Back-N ARQ나 Selective Repeat ARQ 방식과 결합되어 손실되거나 오류가 발생한 프레임의 재전송을 담당한다. 특히 전이중 통신이 가능한 환경에서 송신과 수신 윈도우를 독립적으로 운영함으로써 정지-대기 프로토콜에 비해 링크 활용도를 크게 향상시킨다.

전송 계층

전송 계층에서의 대표적인 적용 예는 TCP이다. TCP는 슬라이딩 윈도우 프로토콜을 핵심 메커니즘으로 채택하여 종단 간의 신뢰성 있는 바이트 스트림 전송을 보장한다. TCP의 윈도우는 흐름 제어와 혼잡 제어의 두 가지 목적을 위해 동적으로 크기가 조절된다. 수신자의 가용 버퍼 공간에 기반한 수신 윈도우와 네트워크 혼잡 상태를 반영한 혼잡 윈도우 중 더 작은 값이 실제 적용 윈도우 크기가 된다. 이를 통해 네트워크의 정체를 방지하면서도 수신자의 처리 능력을 초과하지 않는 데이터 전송률을 유지한다.

계층

주요 프로토콜 예시

관리 단위

주요 목적

데이터 링크 계층

HDLC, PPP

프레임

직접 연결된 노드 간의 오류/흐름 제어

전송 계층

TCP

세그먼트(바이트)

종단 간의 신뢰성, 흐름 제어, 혼잡 제어

이러한 계층별 적용을 통해 슬라이딩 윈도우는 효율성과 신뢰성이라는 상충되는 요구사항을 균형 있게 해결하는 근본적인 메커니즘으로 자리 잡았다.

7.1. 데이터 링크 계층

슬라이딩 윈도우 알고리즘은 데이터 링크 계층에서 신뢰성 있는 데이터 전송을 보장하기 위한 핵심 메커니즘으로 널리 사용된다. 이 계층은 물리적인 링크를 통해 직접 연결된 두 노드 사이의 프레임 전송을 책임지며, 흐름 제어와 오류 제어를 결합하여 효율성을 높인다. 특히 HDLC 및 PPP와 같은 프로토콜에서 기본적인 오류 복구 방식으로 채택되었다.

주요 동작 방식은 Go-Back-N ARQ와 Selective Repeat ARQ로 구분된다. Go-Back-N 방식은 오류가 발생한 프레임 이후의 모든 프레임을 재전송하는 반면, Selective Repeat 방식은 오류가 발생한 특정 프레임만 선택적으로 재전송한다. 후자는 수신 측에 더 큰 버퍼가 필요하지만, 대역폭 활용도가 더 높다는 장점이 있다. 두 방식 모두 송신 윈도우와 수신 윈도우를 사용하여 전송 가능한 최대 프레임 수를 제한한다.

프로토콜 예시

주요 특징

일반적인 ARQ 방식

HDLC

비트 지향적 동기식 프로토콜

Selective Repeat 또는 Go-Back-N

PPP

점대점 링크에서 널리 사용

주로 오류 검출에 중점, 재전송은 상위 계층에 의존[7]

데이터 링크 계층에서의 슬라이딩 윈도우 구현은 하드웨어에 가까운 낮은 수준에서 이루어지기 때문에, 효율적인 버퍼 관리와 타이머 처리가 매우 중요하다. 또한 전이중 통신과 반이중 통신에 따라 윈도우 관리 방식에 차이가 있을 수 있다. 이 기법은 링크의 대역폭과 지연 시간을 고려하여 윈도우 크기를 조정함으로써, 송신자가 수신자의 처리 능력을 초과하는 데이터를 보내는 것을 방지한다.

7.2. 전송 계층

전송 계층에서 슬라이딩 윈도우 알고리즘은 TCP와 같은 프로토콜의 핵심 메커니즘으로 작동하여 신뢰성 있는 데이터 전송과 효율성을 동시에 보장한다. 이 계층에서의 주요 역할은 호스트 간 종단 간 통신에서 패킷의 순서화, 오류 제어, 흐름 제어, 그리고 혼잡 제어를 통합적으로 관리하는 것이다. 특히 TCP는 슬라이딩 윈도우를 기반으로 한 확인응답 및 재전송 정책을 통해 네트워크의 상태 변화에 적응적으로 대응한다.

TCP 슬라이딩 윈도우는 송신자와 수신자 각각이 유지하는 버퍼 공간을 기반으로 구성된다. 송신 측의 송신 윈도우 크기는 수신자의 공지 윈도우와 혼잡 윈도우 중 더 작은 값에 의해 결정되며, 이는 수신자의 처리 능력과 네트워크의 혼잡 상태를 모두 반영한다. 수신 측은 누적 확인응답을 사용하여 연속적으로 수신된 데이터의 최종 시퀀스 번호를 알림으로써 효율성을 높인다.

특징

전송 계층 (TCP)에서의 구현

주요 목적

종단 간 신뢰성, 흐름 제어, 혼잡 제어의 통합

윈도우 결정 요소

수신자 공지 윈도우(rwnd)와 혼잡 윈도우(cwnd)

확인응답 방식

주로 누적 확인응답 사용

오류 제어

지연된 재전송, 고속 재전송 등과 결합

대표 프로토콜

TCP, SCTP

이러한 메커니즘은 전송 계층이 패킷 손실, 지연, 중복 등의 문제를 해결하면서도 대역폭을 효율적으로 활용할 수 있게 한다. 또한 혼잡 제어 알고리즘과 긴밀하게 연동되어 네트워크 혼잡을 감지하고 윈도우 크기를 동적으로 조절함으로써 전체 시스템의 안정성을 유지한다.

8. 구현 고려사항

구현 시 버퍼 관리는 핵심 요소이다. 송신 측과 수신 측 모두 윈도우 내의 프레임 또는 세그먼트를 보관하기 위한 버퍼를 유지해야 한다. 송신 측은 아직 확인 응답을 받지 못한 전송된 데이터를 보관하며, 수신 측은 순서가 맞지 않게 도착한 데이터를 임시 저장하거나 애플리케이션에 순차적으로 전달하기 위해 버퍼를 사용한다. 버퍼 크기는 윈도우 크기와 직접적으로 연관되며, 효율적인 메모리 할당 및 오버플로우 방지 전략이 필요하다.

상태 관리를 위해 각 전송 단위(예: 패킷 또는 프레임)에 대한 타이머를 설정하는 것이 일반적이다. 특히 Go-Back-N ARQ나 Selective Repeat ARQ 같은 오류 제어 방식을 사용할 때, 미확인 데이터에 대한 재전송 타이머의 관리가 중요하다. 타이머가 만료되면 해당 데이터부터 재전송을 시작하며, 불필요한 타이머는 적시에 해제하여 시스템 자원을 절약해야 한다.

아래 표는 구현 시 주요 관리 대상과 그 목적을 정리한 것이다.

관리 대상

주요 목적

고려 사항

송신 버퍼

미확인 데이터 보관, 재전송 대비

윈도우 크기에 따른 동적 할당, 확인응답 시 버퍼 해제

수신 버퍼

순서 불일치 데이터 임시 저장

누적 확인응답 또는 선택적 확인응답 방식에 따른 처리

전송 타이머

패킷 손실 감지 및 재전송 트리거

적절한 타임아웃 값 설정, 불필요한 재전송 방지

시퀀스 번호

데이터 순서 및 중복 식별

순환 번호 공간 관리, 윈도우 크기 내에서의 연산

마지막으로, 시퀀스 번호의 순환 처리를 안정적으로 구현해야 한다. 윈도우 크기가 시퀀스 번호 공간보다 작은 경우가 일반적이지만, 번호가 최대값에 도달하면 다시 0부터 시작하는 순환 구조를 올바르게 처리하지 않으면 중복 수신이나 패킷 손실로 오인될 수 있다. 또한, 네트워크 지연이나 수신자 처리 속도에 따라 윈도우 크기를 동적으로 조정하는 알고리즘(예: TCP 혼잡 제어)과의 연동도 구현 복잡도를 높이는 요소이다.

8.1. 버퍼 관리

슬라이딩 윈도우 알고리즘의 구현에서 버퍼 관리는 송신측과 수신측의 데이터 버퍼를 효율적으로 운영하는 핵심 요소이다. 이는 제한된 메모리 자원 내에서 윈도우 크기만큼의 데이터를 보관하고 순서를 유지하며, 수신된 데이터를 상위 계층에 전달하는 역할을 담당한다.

송신측 버퍼는 아직 확인 응답을 받지 못한 모든 세그먼트를 보관한다. 윈도우가 슬라이딩되면 확인 응답을 받은 데이터는 버퍼에서 해제되고, 새로운 데이터를 위한 공간이 확보된다. 수신측 버퍼는 시퀀스 번호 순서와 무관하게 도착한 데이터를 임시 저장하는 데 사용된다. Selective Repeat ARQ 방식을 사용할 경우, 순서가 맞지 않는 데이터도 버퍼에 보관했다가 누락된 데이터가 도착하면 전체 순서를 맞춰 상위 계층에 전달한다. 버퍼 크기는 최대 윈도우 크기 이상으로 설계되어야 윈도우가 꽉 찼을 때도 데이터를 수용할 수 있다.

효율적인 버퍼 관리는 흐름 제어와 직접적으로 연관된다. 수신측은 수신 윈도우 크기를 ACK 패킷에 실어 알리며, 이는 수신측의 현재 버퍼 여유 공간을 반영한다. 버퍼가 가득 차면 수신 윈도우 크기는 0이 되어 송신을 일시 중지시킨다. 구현 시 고려사항은 다음과 같다.

고려사항

설명

버퍼 구조

일반적으로 원형 버퍼나 연결 리스트를 사용하여 윈도우의 이동을 효율적으로 구현한다.

메모리 할당

정적 할당은 간단하지만 유연성이 떨어지고, 동적 할당은 오버헤드가 발생할 수 있다.

상태 추적

각 버퍼 슬롯에 해당 패킷의 전송 상태(미전송, 전송됨, 확인됨)와 타이머 정보를 유지해야 한다.

오버플로우 방지

버퍼가 가득 찼을 때 새로운 데이터나 중복된 데이터를 처리하는 정책이 필요하다.

버퍼 관리의 성능은 전체 프로토콜의 처리량과 지연 시간에 큰 영향을 미친다. 버퍼가 부족하면 윈도우 크기를 최대로 활용할 수 없어 대역폭을 낭비하고, 버퍼 관리 로직이 비효율적이면 CPU 사용률이 증가하여 시스템 성능을 저하시킨다.

8.2. 타이머 및 상태 관리

슬라이딩 윈도우 알고리즘의 신뢰성 있는 동작을 보장하기 위해서는 각 데이터그램 또는 세그먼트의 전송 상태를 추적하고, 손실이나 지연에 대응하기 위한 타이머와 상태 관리 메커니즘이 필수적이다.

각 전송된 프레임은 일반적으로 별도의 재전송 타이머와 연결된다. Go-Back-N ARQ 방식에서는 송신 윈도우의 첫 번째 프레임에 대해 단일 타이머를 사용하는 경우가 많다. 반면, Selective Repeat ARQ 방식에서는 윈도우 내의 모든 미확인 프레임에 대해 개별 타이머를 관리하여 손실된 특정 프레임만 선택적으로 재전송한다. 타이머의 만료 시간은 왕복 지연 시간과 수신자의 처리 시간을 고려하여 설정되며, 네트워크 상태에 따라 동적으로 조정될 수 있다.

상태 관리는 송신자와 수신자가 각각 유지하는 버퍼와 변수들을 통해 이루어진다. 주요 변수는 다음과 같다.

변수명

설명

SendBase 또는 SND.UNA

확인 응답을 받지 않은 가장 오래된 프레임의 시퀀스 번호

NextSeqNum 또는 SND.NXT

다음에 전송할 프레임의 시퀀스 번호

LastByteAcked

마지막으로 확인 응답된 바이트 번호

LastByteSent

마지막으로 전송된 바이트 번호

RevBase 또는 RCV.NXT

수신자가 기대하는 다음 시퀀스 번호

수신자는 연속적인 시퀀스 번호를 가진 데이터를 올바르게 수신했는지 추적하고, 순서가 맞지 않는 프레임은 버퍼에 임시 저장하거나 폐기한다. 상태 변수와 타이머는 네트워크 혼잡이나 오류 발생 시 알고리즘이 정확한 복구 동작(예: 재전송 또는 윈도우 크기 조정)을 수행할 수 있는 기반 정보를 제공한다.

9. 관련 문서

  • Wikipedia - Sliding window protocol

  • 나무위키 - 슬라이딩 윈도우

  • GeeksforGeeks - Sliding Window Protocol

  • TechTarget - What is the sliding window protocol?

  • KOCW - 데이터 통신(송영문) 6강 흐름제어와 오류제어

  • ScienceDirect - Sliding Window Protocol

리비전 정보

버전r1
수정일2026.02.14 21:22
편집자unisquads
편집 요약AI 자동 생성
히스토리로 돌아가기