네트워크/TCP

TCP 흐름 제어: 슬라이딩 윈도우

shimdh 2025. 3. 8. 11:00
728x90

TCP(Transmission Control Protocol)의 흐름 제어(Flow Control) 는 송신자와 수신자 간의 데이터 전송 속도를 조절하여 원활한 통신을 보장하는 중요한 기법입니다.

네트워크 환경에서는 송신자가 너무 빠른 속도로 데이터를 전송하면, 수신자가 이를 감당하지 못해 데이터가 손실되거나 혼잡이 발생할 수 있습니다. 이를 방지하기 위해 TCP는 슬라이딩 윈도우(Sliding Window) 메커니즘을 사용하여 데이터 전송량을 동적으로 조절합니다.

슬라이딩 윈도우는 데이터를 일정한 크기의 창(Window) 단위로 나누어 전송하고, 수신자로부터 확인 응답(ACK, Acknowledgment) 을 받은 후 새로운 데이터를 전송하는 방식으로 동작합니다. 이를 통해 네트워크 자원을 효율적으로 활용하고, 데이터 손실 및 과부하를 방지할 수 있습니다.


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

1) 윈도우(Window) 크기

슬라이딩 윈도우에서 윈도우(Window)송신자가 한 번에 보낼 수 있는 데이터의 최대 크기를 의미합니다. 이 크기는 수신자의 버퍼(Buffer) 크기와 네트워크 상태에 따라 변동될 수 있습니다.

  • 예를 들어, 윈도우 크기가 5라면 송신자는 최대 5개의 세그먼트(패킷) 를 연속으로 전송할 수 있습니다.
  • 윈도우 크기가 작을수록 송신자는 더 자주 ACK를 확인해야 하며, 크기가 크면 더 많은 데이터를 한 번에 보낼 수 있습니다.

2) 전송 및 확인 응답(ACK) 과정

TCP의 슬라이딩 윈도우는 다음과 같은 방식으로 동작합니다.

  1. 송신자는 윈도우 크기만큼의 데이터를 연속적으로 전송합니다.
  2. 수신자는 받은 데이터가 정상적인 경우, 해당 패킷의 확인 응답(ACK) 을 송신자에게 보냅니다.
  3. 송신자는 ACK를 받으면, 윈도우를 다음 데이터 세트로 슬라이드(이동) 시키며 새로운 데이터를 전송합니다.
  4. 만약 특정 패킷이 손실되거나 오류가 발생하면, 해당 패킷만 재전송하여 효율적인 데이터 교환을 보장합니다.

이러한 과정이 반복되며 데이터가 원활하게 전송됩니다.


2. 슬라이딩 윈도우의 동작 방식

슬라이딩 윈도우의 원리를 쉽게 이해하기 위해 예제를 살펴보겠습니다.

예제 시나리오

A라는 컴퓨터가 B라는 컴퓨터에 파일을 전송한다고 가정하겠습니다.

  1. 초기 데이터 전송

    • A는 윈도우 크기가 4인 경우, 4개의 패킷(P1, P2, P3, P4)을 한 번에 전송할 수 있습니다.
    • A는 P1~P4를 보낸 후, 수신자로부터 ACK를 기다립니다.
  2. 수신자의 응답 및 윈도우 이동

    • B는 P1과 P2를 정상적으로 수신하였다고 가정합니다.
    • 따라서, B는 A에게 "P1과 P2를 정상적으로 받았다"는 ACK(3) 을 보냅니다. (다음에 받을 패킷이 P3라는 의미)
    • A는 P3과 P4가 아직 확인되지 않았으므로 다시 확인을 기다립니다.
  3. 새로운 데이터 전송

    • A는 ACK를 받은 후 윈도우를 이동(슬라이딩)시키고, 다음 패킷(P5, P6)을 전송할 수 있습니다.
    • 이후에도 ACK를 받을 때마다 윈도우가 이동하며 새로운 데이터가 전송됩니다.

이처럼 슬라이딩 윈도우는 일정한 크기의 데이터 단위를 주고받으며 연속적인 데이터 흐름을 유지할 수 있도록 합니다.


3. 슬라이딩 윈도우의 이점

1) 네트워크 혼잡 방지

네트워크에서 송신자가 한꺼번에 많은 데이터를 전송하면, 수신자가 이를 감당하지 못하여 패킷 손실이나 혼잡(Congestion)이 발생할 수 있습니다.

  • 슬라이딩 윈도우는 송신 속도를 조절하여 네트워크 과부하를 방지하고, 최적의 전송 속도를 유지할 수 있도록 합니다.

2) 데이터 전송 최적화

슬라이딩 윈도우 기법을 사용하면, 송신자는 연속적으로 데이터를 전송할 수 있어 전송 속도가 향상됩니다.

  • ACK를 한 번 받을 때마다 하나의 패킷을 보내는 방식보다 훨씬 효율적입니다.

3) 네트워크 자원 활용 극대화

TCP는 네트워크 상태를 지속적으로 모니터링하면서 윈도우 크기를 동적으로 조절할 수 있습니다.

  • 네트워크 상태가 양호하면 윈도우 크기를 증가시키고, 혼잡이 발생하면 윈도우 크기를 줄이는 방식으로 최적의 데이터 전송 속도를 유지합니다.

4. 실생활 속 예시

1) 대용량 파일 다운로드

클라우드 스토리지(Google Drive, Dropbox)에서 파일을 다운로드할 때, 서버는 슬라이딩 윈도우 기법을 사용하여 데이터를 전송합니다.

  • 만약 사용자의 인터넷 속도가 빠르면 윈도우 크기가 커지고, 느리면 윈도우 크기가 줄어들어 최적의 속도로 데이터를 받을 수 있습니다.

2) 동영상 스트리밍 서비스(유튜브, 넷플릭스)

온라인 스트리밍 플랫폼은 TCP 기반으로 데이터를 전송하며, 사용자의 네트워크 환경에 따라 슬라이딩 윈도우 크기를 조절합니다.

  • 인터넷 속도가 빠를 경우, 더 많은 데이터를 한 번에 받아서 고화질(1080p, 4K) 스트리밍이 가능해집니다.
  • 속도가 느리면, 자동으로 저화질(360p, 480p)로 변경하여 영상이 끊기지 않도록 합니다.

3) 온라인 게임

멀티플레이어 온라인 게임에서는 슬라이딩 윈도우를 이용한 데이터 전송 최적화가 필수적입니다.

  • 플레이어의 입력 정보를 신속하게 서버에 전달하고, 서버는 이를 다른 플레이어들에게 빠르게 공유해야 합니다.
  • 만약 네트워크 상태가 불안정하다면 슬라이딩 윈도우 크기를 조절하여 지연(Lag) 현상을 최소화할 수 있습니다.

5. 결론

슬라이딩 윈도우 기법은 TCP 프로토콜의 핵심적인 흐름 제어 메커니즘으로, 신뢰성 높은 데이터 전송을 가능하게 합니다.

네트워크 혼잡을 방지하며, 최적의 속도로 데이터를 전송할 수 있음
윈도우 크기를 조절하여 송수신자의 처리 능력에 맞춰 최적화 가능
연속적인 데이터 흐름을 유지하며 패킷 손실을 최소화할 수 있음
파일 다운로드, 스트리밍, 온라인 게임 등 다양한 네트워크 서비스에서 필수적으로 사용됨

TCP의 흐름 제어 원리를 이해하면, 네트워크 트래픽을 최적화하고 더 나은 인터넷 환경을 구축하는 데 도움이 될 것입니다.

728x90