핵심 인사이트 (3줄 요약)

  1. 본질: 혼잡 윈도우는 전송 계층에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
  2. 가치: 혼잡 윈도우를 이해하면 신뢰성과 지연 사이의 균형을 더 정확히 볼 수 있다.
  3. 판단 포인트: 설계 시에는 개념 자체보다 적용 조건, 운영 복잡도, 인접 기술과의 경계를 함께 판단해야 한다.

Ⅰ. 개요 및 필요성

  • 개념: 송신 측 운영체제 커널 내부에 유지되는 동적 상태 변수. 네트워크의 혼잡 상태를 유추하여, 수신 측의 확인 응답(ACK) 없이 한 번에 전송할 수 있는 최대 데이터의 양을 바이트(또는 MSS) 단위로 제한한다.

  • 필요성: 수신자가 나한테 "내 램(RWND)이 엄청 크니까 1GB 한 번에 보내!"라고 했다. 구형 TCP는 이 말만 믿고 1GB를 냅다 쐈다. 근데 중간 통신사(KT) 라우터는 10MB짜리 똥라우터였다. 라우터가 1GB를 다 받아내지 못하고 990MB를 뱉어버렸다(망 붕괴). "아! 수신자 말만 믿으면 안 되겠다. 수신자가 허락한 창문(RWND)과 별개로, 내가 직접 인터넷 길거리를 찔러보면서 유동적으로 조절할 나만의 비밀 창문(CWND)을 하나 더 파야겠다!"

  • 💡 비유: CWND는 고속도로 톨게이트 진입로의 **"초록불 진입 통제기"**와 같습니다.

    • RWND: 목적지 리조트 주인이 "우리 주차장에 차 100대 댈 수 있어요!"라고 허락한 대수.
    • CWND: 내가 톨게이트에 서서 눈치껏 본 고속도로 상황. "오케이, 리조트는 100대 허락했지만, 지금 고속도로가 꽉 막혀서 한 번에 5대(CWND)밖에 못 들어가겠어. 일단 5대만 톨게이트 열어줘!"
    • 차가 무사히 도착해서 리조트 주인이 전화(ACK)를 주면, "오 길 좀 뚫리나 본데? 이번엔 10대(CWND 증가) 들여보내자!"라고 내가 스스로 진입 대수를 조절합니다.
[TCP 혼잡 제어]
    │
    ▼
[혼잡 윈도우]
    │
    └──▶ [슬로우 스타트]
  • 📢 섹션 요약 비유: ** CWND는 시각 장애인이 짚고 걷는 **"안테나 지팡이의 길이"**입니다. 처음엔 짧게(1 MSS) 쥐고 걷다가, 앞이 뻥 뚫려있다는 감(ACK)이 오면 지팡이를 쭉 길게 뽑아(CWND 팽창) 보폭을 크게 넓혀 쾌속 질주를 시작합니다.

Ⅱ. 아키텍처 및 핵심 원리

1. 절대 방정식: MIN(RWND, CWND)

이 공식이 현대 인터넷 통신의 핵심을 지배한다. 실제 송신 창문 크기 (Send Window) = MIN (수신 윈도우, 혼잡 윈도우)

[ 시나리오 A: 똥컴 수신자 vs 빵빵한 인터넷망 ]

  • 수신자 램 여유 (RWND) = 10 KB
  • 인터넷망 상태 (CWND) = 100 KB (오 뻥 뚫렸네!)
  • 내 PC의 결정: MIN(10, 100) = 10 KB만 발사!
  • (인터넷은 쌩쌩하지만 수신자가 체할까 봐 배려함).

[ 시나리오 B: 슈퍼컴 수신자 vs 막혀터진 인터넷망 ]

  • 수신자 램 여유 (RWND) = 1 GB (우주 끝까지 받을 수 있음!)
  • 인터넷망 상태 (CWND) = 14 KB (명절 귀성길 수준 꽉 막힘!)
  • 내 PC의 결정: MIN(1GB, 14KB) = 14 KB만 찔끔 발사!
  • (수신자는 넉넉하지만 인터넷 톨게이트가 박살 날까 봐 억제함).

2. CWND는 어떻게 숫자를 늘릴까? (ACK 기반 팽창)

내 PC는 CWND 값을 어떻게 계산할까? 철저하게 상대방의 영수증(ACK)이 돌아오는 속도에 비례해서 숫자를 키운다. (이걸 Self-Clocking이라 부른다).

  • 시작: CWND = 1 (상자 1개, 1460 바이트). 택배 하나를 던진다.
  • 영수증 도착! "오! 1개 잘 갔네?" ──▶ CWND = 2 (상자 2개 쏠 수 있음).
  • 2개 던짐. 영수증 2개 도착! "오 2개도 소화하네?" ──▶ CWND = 4 (상자 4개 발사!).
  • 4개 던짐. 영수증 4개 도착! "길 완벽히 뚫림!!" ──▶ CWND = 8
  • 이런 식으로 ACK가 무사히 돌아올 때마다 내 CWND 창문은 풍선처럼 미친 듯이 팽창한다.
 ┌─────────────────────────────────────────────────────────────┐
 │                CWND 팽창과 수축의 드라마틱한 인생 그래프            │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   CWND 크기 (패킷 개수)                                        │
 │   16 |           /|         /|                              │
 │   14 |         /  |       /  |                              │
 │   12 |       /    |     /    |                              │
 │   10 |     /      |   /      |                              │
 │    8 |   /        | /        |                              │
 │    4 | /          |          |                              │
 │    2 |/           |          |                              │
 │    1 *──(성장기)──* (절망)    * ──(다시 성장)                 │
 │                                                             │
 │   * 성장기: ACK가 제깍제깍 돌아와서 기분 좋게 CWND 창문을 마구 늘림.     │
 │   * 절망(Drop): 갑자기 영수증이 안 옴! "앗! 톨게이트 막혀서 다 터졌나 봐!"│
 │               ──▶ CWND 창문을 즉시 1로 박살 냄(수축).              │
 │   ▶ "이 CWND 크기를 늘리고 깎는 타이밍 기술이 곧 TCP의 혼잡 알고리즘이다!"│
 └─────────────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: 혼잡 윈도우의 내부 원리는 기계의 톱니바퀴처럼 맞물려 돌아간다. 한 부분이 어긋나면 전체 효과가 떨어진다.

Ⅲ. 비교 및 연결

혼잡 윈도우를 볼 때는 앞뒤 개념과의 경계를 함께 봐야 전체 흐름이 선명해진다. TCP 혼잡 제어가 기반 조건을 만든다면, 혼잡 윈도우는 그 위에서 핵심 메커니즘을 구현하고, 슬로우 스타트는 이를 더 확장된 적용 단계로 연결한다. 따라서 단일 정의보다 신뢰성과 지연에 어떤 차이를 만드는지 비교하는 것이 중요하다.

관점선행 개념현재 개념확장 개념
초점TCP 혼잡 제어의 기반 정리혼잡 윈도우의 핵심 동작슬로우 스타트의 확장 적용
자원 관점기본 조건 확보신뢰성 최적화규모와 범위 확대
판단 포인트도입 가능성 확인현재 메커니즘의 적합성 판단운영·확장 전략 연결
  • 📢 섹션 요약 비유: 혼잡 윈도우는 비슷한 기술들 사이의 차선을 구분하는 분기점과 같다. 어디서 갈라지는지 알아야 헷갈리지 않는다.

Ⅳ. 실무 적용 및 기술사 판단

파일을 다운받을 때 처음에 몇백 KB/s 로 시작했다가 1초 뒤에 몇십 MB/s 로 치솟는 경험을 해봤을 것이다. 이것이 바로 내 PC의 CWND가 1에서 시작했다가 영수증(ACK)을 받으며 기하급수적으로 창문을 팽창시키고 있는 워밍업 시간 때문이다. (다음 장에서 배울 Slow Start).

실무 체크리스트

  1. 요구사항과 병목 지점을 먼저 수치화한다.
  2. 운영 복잡도와 도입 효과를 함께 검증한다.
  3. 인접 기술과의 연계를 배포 전에 점검한다.
  • 📢 섹션 요약 비유: ** CWND는 엑셀 페달 밑에 깔아둔 **"가상의 나무토막"**입니다. 처음엔 안전을 위해 나무토막을 꽉 채워(CWND=1) 악셀이 거의 안 밟히게 하다가, 길이 뻥 뚫린 게 눈으로 확인되면(ACK 수신) 나무토막을 하나씩 빼서(CWND 팽창) 시속 200km까지 밟을 수 있게 허락해 주는 스마트한 족쇄입니다.

Ⅴ. 기대효과 및 결론

혼잡 윈도우는 전송 계층을 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 신뢰성 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 슬로우 스타트, 적응형 저지연 전송, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 적응형 저지연 전송 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.

  • 📢 섹션 요약 비유: 혼잡 윈도우는 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.

📌 관련 개념 맵

개념연결 포인트
TCP 혼잡 제어현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다.
세그먼트 (Segment)전송 계층이 다루는 기본 단위다.
흐름 제어 (Flow Control)수신자 처리 속도를 넘지 않게 조절한다.
슬로우 스타트현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다.

📈 관련 키워드 및 발전 흐름도

[선행 개념: TCP 혼잡 제어]
    │
    ▼
[현재 개념: 혼잡 윈도우]
    │
    ├──▶ [확장 A: 슬로우 스타트]
    └──▶ [확장 B: 적응형 저지연 전송]

혼잡 윈도우는 TCP 혼잡 제어에서 출발해 현재 메커니즘을 정교화하고, 이후 슬로우 스타트와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.

👶 어린이를 위한 3줄 비유 설명

  1. 물건을 보낼 때 받는 사람이 너무 빨리 받으면 놓칠 수 있어요.
  2. 이 개념은 천천히 보낼지, 다시 보낼지, 길이 막히면 멈출지를 정해줘요.
  3. 그래서 멀리 보내도 덜 잃어버리고 더 안정적으로 도착해요.