본문 바로가기
전공과목/네트워크

[네트워크] 전송 계층 프로토콜 2: TCP 흐름 제어(Sliding Window) 및 혼잡 제어(Slow Start, Fast Retransmit) 완벽 정리

by 아임코딩 2026. 9. 2.
반응형

"TCP는 어떻게 수신 측의 버퍼가 넘치지 않도록 조절하고, 라우터 병목 현상으로 인한 네트워크 마비를 막을까요?"

"정보처리기사 및 전산직 시험에서 항상 출제되는 슬라이딩 윈도우, Slow Start, Fast Retransmit의 동작 원리는 무엇일까요?"

전송 계층(Transport Layer)의 핵심 프로토콜인 TCP는 단순한 데이터 전송을 넘어 송신 측과 수신 측 사이의 속도 차이를 조절하는 흐름 제어(Flow Control)와 네트워크 전체의 혼잡 상태를 제어하는 혼잡 제어(Congestion Control) 기법을 제공합니다.

이번 글에서는 시험 및 실무 면접의 단골 주제인 슬라이딩 윈도우(Sliding Window)와 주요 혼잡 제어 알고리즘(Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery)을 한눈에 알기 쉽게 정리해 드립니다!

1. 수신 측 버퍼 오버플로우 방지: 흐름 제어 (Flow Control)

흐름 제어는 송신 측의 데이터 전송 속도가 수신 측의 처리 속도보다 빨라서 발생하는 수신 버퍼 오버플로우(데이터 손실)를 방지하기 위한 메커니즘입니다.

슬라이딩 윈도우 (Sliding Window) 방식

TCP 흐름 제어의 핵심 기법으로, 수신 측이 설정해 준 수신 윈도우 크기(RWND, Receiver Window) 범위 내에서 ACK(확인 응답) 없이도 연속적으로 데이터를 전송할 수 있게 해줍니다.

1.1단계: 윈도우 크기(RWND) 알림:

수신 측은 TCP 헤더의 Window Size 필드를 통해 현재 자기가 받을 수 있는 버퍼 여유 공간(예: 3000 바이트)을 송신 측에 알립니다.

2.2단계: 데이터 연속 전송:

송신 측은 수신 측이 알린 윈도우 크기 범위 안에서 ACK 수신 없이 데이터를 연속해서 전송합니다.

3.3단계: ACK 수신 및 윈도우 이동 (Sliding):

수신 측으로부터 프레임에 대한 ACK를 받으면, 송신 측은 전송 윈도우를 ACK 받은 만큼 오른쪽으로 슬라이딩(이동)시켜 다음 데이터를 전송합니다.

2. 네트워크 병목 현상 방지: 혼잡 제어 (Congestion Control)

혼잡 제어는 네트워크 내부(라우터 및 회선)의 전송량 과부하로 인한 패킷 손실 및 지연 현상을 방지하기 위해 송신 측의 전송량을 조절하는 메커니즘입니다.

송신 측은 혼잡 윈도우 크기(CWND, Congestion Window)를 스스로 조절하며, 최종적으로 실제 전송 윈도우 크기는 수신 윈도우(RWND)와 혼잡 윈도우(CWND) 중 더 작은 값(Min[RWND, CWND])으로 결정됩니다.

주요 혼잡 제어 알고리즘 4가지

① Slow Start (느린 시작)

  • 작동 원리: 이름은 '느린 시작'이지만 실제로는 지수 함수적으로 매우 빠르게 윈도우 크기를 늘리는 방식입니다.
  • 처음에는 CWND를 1 MSS(Maximum Segment Size)부터 시작하여, ACK가 하나씩 도착할 때마다 CWND를 1씩 늘려 나갑니다. (결과적으로 1 RTT마다 CWND가 1 -> 2 -> 4 -> 8 -> 16...으로 2배씩 증가)
  • 임계값인 ss-thresh (Slow Start Threshold)에 도달할 때까지 지수적 증가를 유지합니다.

② Congestion Avoidance (혼잡 회피)

  • CWND가 임계값(ss-thresh)에 도달하면, 패킷 손실을 예방하기 위해 선형적으로 완만하게 윈도우를 늘립니다.
  • 1 RTT마다 CWND를 1 MSS씩 증가시킵니다. (16 -> 17 -> 18 -> 19...)

③ Fast Retransmit (빠른 재전송)

  • 송신 측이 동일한 ACK를 연속으로 3번(3 Duplicate ACKs) 수신하면, 타임아웃(Timeout) 시간이 완료될 때까지 기다리지 않고 손실된 패킷을 즉시 재전송하는 기법입니다.

④ Fast Recovery (빠른 회복)

  • 3 Duplicate ACKs가 발생하면 네트워크가 아예 마비된 것은 아니라고 판단하여, CWND를 1로 줄이지 않고 ss-thresh 및 CWND를 절반으로 줄인 후 선형적으로 재증가시키는 방식입니다. (TCP Reno 방식)

💡 한눈에 비교하는 흐름 제어 vs 혼잡 제어 요약표

구분 흐름 제어 (Flow Control) 혼잡 제어 (Congestion Control)
목적 수신 측 버퍼 오버플로우 방지 네트워크 경로(라우터) 과부하 방지
제어 대상 송신 기기 - 수신 기기 (1:1) 송신 기기 - 전체 네트워크 망 (1:N)
핵심 윈도우 RWND (Receiver Window) CWND (Congestion Window)
대표 기술 Stop-and-Wait, Sliding Window Slow Start, Fast Retransmit, Fast Recovery
최종 윈도우 결정 실제 전송 윈도우 = Min(RWND, CWND)  

📌 시험 핵심 기출 포인트 체크

  1. Slow Start의 윈도우 증가율: Slow Start 구간에서는 RTT마다 윈도우 크기가 2배(지수적)로 늘어나며, ss-thresh 이후부터는 1씩(선형적) 늘어난다는 차이점을 숙지해야 합니다.
  2. 패킷 손실 감지 시 반응:
    • 타임아웃(Timeout) 발생 시: 네트워크가 심각한 혼잡 상태라고 판단하여 ss-thresh를 현재 CWND의 절반으로 줄이고, CWND를 1 MSS로 리셋 후 Slow Start 재시작.
    • 3-ACK Duplication 발생 시: 상대적으로 경미한 혼잡으로 판단하여 CWND를 절반으로 줄이고(Fast Recovery) 선형 증가 시작.
  3. 실제 전송 가능 용량 공식: Min(수신 윈도우 크기, 혼잡 윈도우 크기)를 기준으로 계산하는 단골 문제가 자주 등장합니다.
반응형