핵심 인사이트 (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).
실무 체크리스트
- 요구사항과 병목 지점을 먼저 수치화한다.
- 운영 복잡도와 도입 효과를 함께 검증한다.
- 인접 기술과의 연계를 배포 전에 점검한다.
- 📢 섹션 요약 비유: ** CWND는 엑셀 페달 밑에 깔아둔 **"가상의 나무토막"**입니다. 처음엔 안전을 위해 나무토막을 꽉 채워(CWND=1) 악셀이 거의 안 밟히게 하다가, 길이 뻥 뚫린 게 눈으로 확인되면(ACK 수신) 나무토막을 하나씩 빼서(CWND 팽창) 시속 200km까지 밟을 수 있게 허락해 주는 스마트한 족쇄입니다.
Ⅴ. 기대효과 및 결론
혼잡 윈도우는 전송 계층을 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 신뢰성 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 슬로우 스타트, 적응형 저지연 전송, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 적응형 저지연 전송 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.
- 📢 섹션 요약 비유: 혼잡 윈도우는 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| TCP 혼잡 제어 | 현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다. |
| 세그먼트 (Segment) | 전송 계층이 다루는 기본 단위다. |
| 흐름 제어 (Flow Control) | 수신자 처리 속도를 넘지 않게 조절한다. |
| 슬로우 스타트 | 현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다. |
📈 관련 키워드 및 발전 흐름도
[선행 개념: TCP 혼잡 제어]
│
▼
[현재 개념: 혼잡 윈도우]
│
├──▶ [확장 A: 슬로우 스타트]
└──▶ [확장 B: 적응형 저지연 전송]
혼잡 윈도우는 TCP 혼잡 제어에서 출발해 현재 메커니즘을 정교화하고, 이후 슬로우 스타트와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.
👶 어린이를 위한 3줄 비유 설명
- 물건을 보낼 때 받는 사람이 너무 빨리 받으면 놓칠 수 있어요.
- 이 개념은 천천히 보낼지, 다시 보낼지, 길이 막히면 멈출지를 정해줘요.
- 그래서 멀리 보내도 덜 잃어버리고 더 안정적으로 도착해요.