네트워크/TCP

데이터 전송: 슬라이딩 윈도우 기법

shimdh 2025. 3. 9. 00:14
728x90

슬라이딩 윈도우(Sliding Window) 기법은 TCP(Transmission Control Protocol)에서 데이터 전송의 효율성을 극대화하기 위해 사용되는 핵심적인 흐름 제어(Flow Control) 및 혼잡 제어(Congestion Control) 메커니즘입니다.
이 기법을 활용하면 송신자와 수신자 간의 데이터 흐름을 조절하여 패킷 손실 및 지연을 최소화하고, 네트워크 대역폭을 최적화할 수 있습니다.

슬라이딩 윈도우는 특히 대규모 네트워크 환경에서 데이터 전송 속도를 유지하면서도 안정성을 보장하는 필수 기술로,
인터넷을 통한 파일 다운로드, 비디오 스트리밍, 온라인 게임 등 다양한 실시간 통신 애플리케이션에서 널리 활용됩니다.

이 글에서는 슬라이딩 윈도우 기법의 개념, 동작 원리, 주요 기능 및 실생활에서의 활용 사례를 살펴보겠습니다.


1. 슬라이딩 윈도우 기법의 개념

🔹 슬라이딩 윈도우란?

슬라이딩 윈도우(Sliding Window) 기법은 송신자가 한 번에 전송할 수 있는 데이터 패킷(세그먼트)의 개수를 제한하는 방식입니다.
이 기법을 통해 수신자가 처리할 수 있는 양만큼만 데이터를 보내도록 조절하여 네트워크 트래픽을 최적화할 수 있습니다.

🔹 슬라이딩 윈도우의 핵심 요소

  1. 윈도우 크기(Window Size)

    • 송신자가 한 번에 보낼 수 있는 최대 세그먼트 수를 의미함.
    • 이 크기는 수신자의 처리 능력 및 네트워크 상태에 따라 동적으로 변경될 수 있음.
  2. 시퀀스 번호(Sequence Number)

    • 각 세그먼트에는 고유한 시퀀스 번호가 부여되어, 수신자가 이를 순서대로 재조립 가능함.
    • 패킷이 네트워크에서 지연되거나 순서가 바뀌더라도 정확한 순서로 재조립할 수 있도록 보장.
  3. ACK(Acknowledgment) 확인 응답

    • 수신자가 성공적으로 받은 세그먼트에 대한 확인 메시지를 송신자에게 전송함.
    • 이를 통해 송신자는 새로운 데이터를 보낼 수 있는지 여부를 결정.

결과:
슬라이딩 윈도우는 송신자가 수신자의 처리 속도에 맞춰 데이터를 적절한 속도로 보낼 수 있도록 조절하여 효율적인 흐름 제어를 가능하게 함.


2. 슬라이딩 윈도우 기법의 동작 원리

슬라이딩 윈도우는 윈도우 크기를 기반으로 데이터를 전송하고, ACK 응답을 받으면 윈도우를 이동(slide)시키면서 새로운 데이터를 전송하는 방식으로 작동합니다.

🔹 단계별 동작 과정

1️⃣ 초기 설정(윈도우 크기 설정)

  • TCP 연결이 설정되면 송신자는 최초의 윈도우 크기를 결정함.
  • 예를 들어, 윈도우 크기가 5라면 송신자는 한 번에 최대 5개의 세그먼트를 보낼 수 있음.

2️⃣ 데이터 전송(세그먼트 전송)

  • 송신자는 현재 윈도우 크기만큼 세그먼트를 전송한 후, 수신자의 ACK를 기다림.
  • 예를 들어, 윈도우 크기가 5일 경우 5개의 세그먼트를 한꺼번에 보낸 후, 다음 전송을 위해 ACK 응답을 기다림.

3️⃣ ACK 수신 및 윈도우 이동(Sliding Window Update)

  • 수신자는 정상적으로 받은 세그먼트에 대한 ACK 응답을 송신자에게 전송.
  • 송신자는 ACK를 받은 후, 새로운 세그먼트를 추가로 전송할 수 있음.
  • 이 과정에서 윈도우가 "슬라이딩"하면서 지속적으로 데이터가 전송됨.

예시

  • 윈도우 크기가 5이고, 5개의 패킷을 전송한 후 수신자로부터 3개의 ACK를 받았다면?
    • 송신자는 다음 3개의 새로운 패킷을 추가로 전송 가능.
    • 이 과정이 반복되면서 효율적인 데이터 흐름이 유지됨.

3. 슬라이딩 윈도우의 주요 기능

🔹 1) 흐름 제어(Flow Control) 지원

  • 수신자가 감당할 수 있는 속도로 데이터를 조절하여 네트워크 과부하를 방지.
  • 만약 수신자의 버퍼가 꽉 찼다면, 윈도우 크기를 줄여 송신 속도를 낮춤.

🔹 2) 혼잡 제어(Congestion Control) 기능 통합

  • 네트워크가 혼잡할 경우, 송신 속도를 자동으로 줄여 네트워크 트래픽을 조절.
  • TCP는 혼잡 상태를 감지하면 윈도우 크기를 동적으로 줄이는 기능을 수행함.

🔹 3) 효율적인 대역폭 활용

  • 윈도우 크기를 최적으로 유지함으로써, 가용한 네트워크 대역폭을 최대한 활용 가능.
  • ACK 신호를 기다리지 않고 미리 여러 개의 패킷을 보내기 때문에 전송 속도 향상.

결과
슬라이딩 윈도우는 데이터 전송 속도를 최적화하고, 안정적인 TCP 연결을 유지하는 필수적인 기법.


4. 실생활에서의 활용 사례

✅ 예제 1: 온라인 비디오 스트리밍

  • 넷플릭스(Netflix)나 유튜브(YouTube) 같은 서비스에서 영상 데이터를 안정적으로 전송하기 위해 슬라이딩 윈도우 기법을 활용.
  • 예를 들어, 초기 버퍼링 중에는 큰 윈도우 크기로 많은 데이터를 보내지만, 네트워크 상태가 나빠지면 윈도우 크기를 줄여 과부하를 방지.

✅ 예제 2: 온라인 게임에서 네트워크 트래픽 관리

  • 온라인 게임(예: 리그 오브 레전드, 배틀그라운드 등)에서는 서버가 플레이어들의 위치, 공격, 이동 정보를 실시간으로 빠르게 전달해야 함.
  • 슬라이딩 윈도우를 활용하면 게임 서버가 적절한 속도로 데이터를 보내고, 패킷 손실이 발생하면 일부 데이터만 재전송 가능.

✅ 예제 3: 대용량 파일 다운로드(HTTP/FTP)

  • 웹 브라우저에서 파일을 다운로드할 때, TCP는 슬라이딩 윈도우를 사용하여 데이터를 빠르고 효율적으로 전송.
  • 서버가 대량의 데이터를 한꺼번에 보내고, 수신자는 확인된 데이터만 ACK를 보내면서 흐름을 조절.

결과
슬라이딩 윈도우 기법은 게임, 스트리밍, 파일 다운로드 등 네트워크 환경에서 필수적인 요소.


5. 결론

슬라이딩 윈도우는 TCP의 흐름 제어 및 혼잡 제어를 담당하는 중요한 메커니즘.
데이터를 연속적으로 전송하고, 수신자의 ACK에 따라 윈도우 크기를 조정하여 최적의 속도로 데이터를 전송.
온라인 게임, 비디오 스트리밍, 파일 다운로드 등 다양한 실시간 네트워크 애플리케이션에서 활용됨.

728x90