핵심 인사이트 (3줄 요약)
- 본질: 윈도우 크기는 전송 계층에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
- 가치: 윈도우 크기를 이해하면 신뢰성과 지연 사이의 균형을 더 정확히 볼 수 있다.
- 판단 포인트: 설계 시에는 개념 자체보다 적용 조건, 운영 복잡도, 인접 기술과의 경계를 함께 판단해야 한다.
Ⅰ. 개요 및 필요성
-
개념: TCP 세그먼트 헤더에 포함된 16비트 길이의 필드로, 수신 측이 수신 가능한 여유 버퍼 공간(Receive Window)의 크기를 바이트 단위로 송신 측에 통보하여 데이터 전송량을 제어하는 메커니즘.
-
필요성: 구글 서버는 100Gbps로 데이터를 쏠 능력이 있다. 그런데 내 노트북은 CPU가 똥컴이라 데이터를 10Mbps로밖에 저장을 못 한다. 구글이 100Gbps로 영화를 쏴버리면, 내 노트북 랜카드로 들어온 데이터가 메모리(버퍼)에 쌓이다가 결국 넘쳐흘러서(Overflow) 90%의 데이터가 쓰레기통에 버려지고 노트북은 뻗어버린다. **"야, 구글! 내 창고(버퍼) 크기가 지금 64,000 바이트밖에 안 남았으니까 깝치지 말고 딱 64,000 바이트까지만 보내고 내 영수증 올 때까지 숨 참고 기다려!!"**라는 완벽한 브레이크 장치가 필요했다.
-
💡 비유: 윈도우 사이즈는 식당의 **"남은 테이블 개수"**와 같습니다.
- 홀 서빙 직원(수신자 PC)이 주방장(송신자 서버)에게 외칩니다. "지금 밖에 빈 테이블(Window Size) 3개밖에 없으니까, 요리 3개만 먼저 한 방에 내보내!"
- 주방장은 3개의 요리를 연달아 내놓고 멈춥니다.
- 손님이 1명 밥을 다 먹고 나갔습니다(데이터 처리 완료, ACK 발송). 직원이 **"빈자리 하나 났어! 창문(Window) 한 칸 옆으로 밀어서 요리 1개 더 줘!"**라고 하면 주방장이 다시 요리를 만듭니다.
[ECN 징후 플래그]
│
▼
[윈도우 크기]
│
└──▶ [체크섬]
- 📢 섹션 요약 비유: ** 흐름 제어용 윈도우 크기는 정수기 호스의 **"수압 조절 다이얼"**입니다. 내 컵(수신자 버퍼)이 찰랑찰랑 넘칠 것 같으면 다이얼(Window Size)을 줄여 물을 쫄쫄 나오게 하고, 컵을 비워서 여유가 생기면 다이얼을 최대로 틀어 콸콸 쏟아지게 만드는 완벽한 수위 조절 장치입니다.
Ⅱ. 아키텍처 및 핵심 원리
1. Zero Window (통신 일시 정지)
내 노트북이 롤(LOL)을 하느라 CPU 점유율이 100%를 찍었다.
- 구글 서버에서 영화 데이터가 막 들어오는데, 내 CPU가 바빠서 이걸 램(버퍼)에서 하드디스크로 빼내지(저장하지) 못하고 있다.
- 결국 수신 버퍼가 100% 꽉 차버렸다!
- 내 노트북은 구글에게 **
Window Size = 0 (Zero Window)**이라고 적은 ACK 영수증을 날린다. - 이 패킷을 받은 구글은 "헐, 쟤 창고 다 찼대! 당장 전송 중지(STOP)!!" 하고 얼음 상태가 되어 숨을 참는다.
- 5초 뒤, 내 노트북이 하드디스크에 저장을 마치고 버퍼를 싹 비웠다.
- 내 노트북은 구글에게 **
Window Size = 64000 (Window Update)**이라고 엽서를 날려, "나 창고 비웠어! 다시 쏴!!"라며 기가 막히게 통신을 재개한다.
2. 16비트의 한계: 64KB 지옥
TCP 헤더를 만든 1980년대 천재들의 유일한 실수다.
- Window Size 필드는 16비트다. 표현할 수 있는 최대 숫자는 $2^{16} - 1 = \text{65,535}$ 다.
- 즉, 수신자가 송신자에게 한 번에 요구할 수 있는 최대 크기(창문 크기)가 고작 64KB밖에 안 된다는 뜻이다.
- 송신자가 1Gbps 속도로 쏴도, 수신자가 "64KB 보내고 잠깐 대기!"를 시전하니까, 기가비트 인터넷 시대에 1GB짜리 파일을 다운받는 데 수십 분이 걸리는(속도가 안 나오는) 미친 대참사가 벌어졌다. (이를 LFN(Long Fat Network) 문제라 한다).
3. 기적의 꼼수: Window Scale Option (RFC 1323)
"야, 20바이트 기본 헤더를 뜯어고칠 순 없으니까, 뒤에 꼬리표(Option 구역)를 달아서 꼼수를 부리자!"
- 통신을 처음 맺을 때(SYN 패킷), Option 구역에
Window Scale = 8이라는 치트키를 박아 넣는다. - 이 뜻은 "앞으로 내가 기본 헤더에 Window Size를
100이라고 적어서 보내면, 너는 그걸 그대로 믿지 말고 내 치트키($2^8 = 256$)를 곱해서100 * 256 = 25,600바이트라고 해석해라!"라는 뜻이다. - 이 꼼수 덕분에 윈도우 사이즈는 최대 64KB에서 무려 **1GB(기가바이트)**까지 우주 팽창을 이루어냈고, 오늘날 우리가 스팀에서 100GB짜리 게임을 10분 만에 다운받을 수 있게 되었다.
┌─────────────────────────────────────────────────────────────┐
│ 와이어샤크의 Window Size와 Scale 곱셈의 기적 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ TCP 분석 화면 ] │
│ Window size value: 258 ◀─ (16비트 헤더에 실제 찍힌 값) │
│ [Calculated window size: 66048] ◀─ (실제 한 번에 쏘는 크기!!) │
│ Window size scaling factor: 256 ◀─ (아까 SYN 때 합의한 치트키 값)│
│ │
│ ▶ 258 * 256 = 66,048 바이트! │
│ ▶ 이 마법의 곱셈(Scale)이 없었다면 현대의 기가비트 인터넷은 │
│ 존재하지 못하고 구석기 시대 모뎀 속도에 머물렀을 것이다. │
└─────────────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: ** Window Size가 64KB밖에 안 되던 시절은 삽으로 흙을 퍼서 트럭을 채우는 **"가내 수공업"**이었습니다. Window Scale 옵션의 도입은 이 삽의 크기를 $2^8$(256배), $2^{14}$(16,384배)로 뻥튀기하는 마법의 가루를 뿌려, 한 번의 삽질(1번의 ACK)로 포크레인 급의 흙을 퍼담는 **"중장비 산업 혁명"**을 이루어 낸 것입니다.
Ⅲ. 비교 및 연결
윈도우 크기를 볼 때는 앞뒤 개념과의 경계를 함께 봐야 전체 흐름이 선명해진다. ECN 징후 플래그가 기반 조건을 만든다면, 윈도우 크기는 그 위에서 핵심 메커니즘을 구현하고, 체크섬은 이를 더 확장된 적용 단계로 연결한다. 따라서 단일 정의보다 신뢰성과 지연에 어떤 차이를 만드는지 비교하는 것이 중요하다.
| 관점 | 선행 개념 | 현재 개념 | 확장 개념 |
|---|---|---|---|
| 초점 | ECN 징후 플래그의 기반 정리 | 윈도우 크기의 핵심 동작 | 체크섬의 확장 적용 |
| 자원 관점 | 기본 조건 확보 | 신뢰성 최적화 | 규모와 범위 확대 |
| 판단 포인트 | 도입 가능성 확인 | 현재 메커니즘의 적합성 판단 | 운영·확장 전략 연결 |
- 📢 섹션 요약 비유: 윈도우 크기는 비슷한 기술들 사이의 차선을 구분하는 분기점과 같다. 어디서 갈라지는지 알아야 헷갈리지 않는다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 윈도우 크기를 단독 개념으로 외우기보다 어떤 병목을 줄이기 위한 선택인지 먼저 따져야 한다. 특히 ECN 징후 플래그 수준의 기본 대책으로 충분한지, 아니면 윈도우 크기가 제공하는 메커니즘이 실제로 필요한지 구분해야 한다. 이후 확장 단계에서는 체크섬와 같은 후속 기술, 자동화 체계, 표준 호환성까지 함께 검토해야 한다.
실무 체크리스트
- 현재 문제의 핵심이 신뢰성 부족인지, 지연 악화인지 먼저 분리한다.
- 윈도우 크기가 추가하는 복잡도와 운영 이득이 균형을 이루는지 확인한다.
- 도입 후에는 인접 기술인 체크섬와의 연계 방식을 함께 검증한다.
안티패턴
-
윈도우 크기의 장점만 보고 트래픽 패턴이나 운영 비용을 무시한 채 과도 도입하는 설계
-
ECN 징후 플래그와의 경계를 정리하지 않아 중복 투자나 정책 충돌을 만드는 설계
-
📢 섹션 요약 비유: 윈도우 크기를 실제로 쓰는 판단은 도구 상자를 고르는 일과 비슷하다. 좋아 보이는 도구보다 지금 문제에 맞는 도구가 중요하다.
Ⅴ. 기대효과 및 결론
윈도우 크기는 전송 계층을 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 신뢰성 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 체크섬, 적응형 저지연 전송, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 적응형 저지연 전송 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.
- 📢 섹션 요약 비유: 윈도우 크기는 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| ECN 징후 플래그 | 현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다. |
| 세그먼트 (Segment) | 전송 계층이 다루는 기본 단위다. |
| 흐름 제어 (Flow Control) | 수신자 처리 속도를 넘지 않게 조절한다. |
| 체크섬 | 현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다. |
📈 관련 키워드 및 발전 흐름도
[선행 개념: ECN 징후 플래그]
│
▼
[현재 개념: 윈도우 크기]
│
├──▶ [확장 A: 체크섬]
└──▶ [확장 B: 적응형 저지연 전송]
윈도우 크기는 ECN 징후 플래그에서 출발해 현재 메커니즘을 정교화하고, 이후 체크섬와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.
👶 어린이를 위한 3줄 비유 설명
- 물건을 보낼 때 받는 사람이 너무 빨리 받으면 놓칠 수 있어요.
- 이 개념은 천천히 보낼지, 다시 보낼지, 길이 막히면 멈출지를 정해줘요.
- 그래서 멀리 보내도 덜 잃어버리고 더 안정적으로 도착해요.