핵심 인사이트 (3줄 요약)
- 본질: TCP 타호(Tahoe) 모델은 인터넷 붕괴 사태를 막기 위해 1988년에 반 제이콥슨(Van Jacobson)이 세상에 내놓은 역사상 최초의 '혼잡 제어 알고리즘' 완전체로, 오늘날 우리가 배우는 슬로우 스타트, 혼잡 회피, 빠른 재전송 개념의 뼈대를 창조한 선구자다.
- 무자비한 엄격함 (1로 추락): 타호의 가장 치명적인 한계이자 특징은, 톨게이트가 완전히 터진 '타임아웃'이든, 가벼운 찰과상인 '3 Dup-ACK(빠른 재전송)'이든 가리지 않고 사고가 났다고 감지되면 무조건 속도(CWND)를 1로 박살 낸 뒤 바닥부터 다시 슬로우 스타트를 시키는 극강의 보수성을 가졌다는 점이다.
- 레노(Reno)로의 세대교체: 타호는 3 Dup-ACK 상황에서도 속도를 1로 떨어뜨려 영화 다운로드를 수시로 버벅거리게 만들었기 때문에, "가벼운 사고면 속도를 절반(16)까지만 깎자!"라는 '빠른 회복(Fast Recovery)' 개념을 탑재한 후속작 TCP 레노(Reno)에게 왕좌를 넘겨주고 역사의 뒤안길로 완벽히 사라졌다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 4.3BSD Unix 운영체제의 Tahoe 릴리즈에 처음 도입된 TCP 혼잡 제어 메커니즘. Slow Start, Congestion Avoidance, Fast Retransmit 세 가지 요소를 포함하고 있다.
-
필요성: 1986년, 아무런 통제 없이 패킷을 쏟아붓던 인터넷이 40bps로 멈춰 서는 대재앙이 발생했다. 모두가 패킷이 유실될 때마다 똑같은 속도로 미친 듯이 재전송을 갈겨댔기 때문이다. "야! 패킷이 죽었다는 건 길이 막혔다는 뜻이야! 무조건 속도를 1(바닥)로 확 줄이고 처음부터 살금살금 밟아 올라오게 법으로 강제해!!" 인터넷을 멸망에서 구하기 위해 가장 원초적이고 확실한 브레이크 시스템이 필요했다.
-
💡 비유: TCP Tahoe는 융통성이라곤 1도 없는 **"FM(원칙주의자) 초보 운전 강사"**와 같습니다.
- 고속도로를 시속 100km로 달리다가 앞차가 급정거(Timeout)를 했습니다.
- 강사는 기겁하며 조수석 브레이크를 꽉 밟아 차를 아예 **시속 0km(완전 정지, CWND 1)**로 세워버립니다.
- 이번엔 길바닥에 작은 돌멩이(3 Dup-ACK, 패킷 1개 유실)가 하나 튀었습니다. 다른 차들은 그냥 속도만 줄이고 지나가는데, 이 원칙주의자 강사는 기겁을 하며 또다시 브레이크를 꽉 밟아 차를 시속 0km(완전 정지, CWND 1)로 갓길에 세우고 1단 기어(Slow Start)부터 다시 출발시킵니다.
📢 섹션 요약 비유: Tahoe 알고리즘은 징검다리를 건너다가 발을 한 번 헛디뎌서 발목에 물이 튄(가벼운 유실) 상황인데도, "위험해! 다 무효야!"라며 징검다리 맨 앞(출발선)으로 쫓겨나 처음부터 다시 돌다리를 두드리며(Slow Start) 건너게 만드는 지독한 생존 본능의 산물입니다.
Ⅱ. Tahoe와 Reno의 비교를 통한 혼잡 제어의 완성 (Deep Dive)
이 개념은 정보처리기사나 네트워크 엔지니어 면접에서 **"Tahoe와 Reno의 차이점을 그래프로 설명하라"**는 단골 질문으로 100% 출제된다.
1. Tahoe가 가진 3가지 무기 (알고리즘)
Tahoe가 원시적이라 놀림받지만, 현대 혼잡 제어의 근간은 이 녀석이 다 만들었다.
- Slow Start: 처음엔 무조건 1부터 시작해서 2배씩 올리자!
- Congestion Avoidance: ssthresh에 닿으면 1개씩 찔끔찔끔 올리자!
- Fast Retransmit: "3번 중복 ACK(Dup-ACK)가 오면? 타이머 만료될 때까지 멍때리지 말고, 눈치껏 즉시 재전송을 갈기자!" (놀랍게도 빠른 재전송의 핑퐁 개념은 Tahoe가 최초 발명자다).
2. Tahoe의 치명적 한계점
Tahoe의 문제는 3번째 무기인 'Fast Retransmit'을 쏜 직후의 행동 강령에 있다.
- 3 Dup-ACK를 보고 눈치껏 3번 패킷을 빠르게 재전송하는 것까진 천재적이었다.
- 그런데 재전송을 갈기고 나서,
ssthresh를 절반으로 깎아둔 뒤 속도(CWND)를 무조건 '1'로 박살 내고 1, 2, 4, 8... 슬로우 스타트를 다시 밟아버렸다. - "아니! 3 Dup-ACK가 왔다는 건 내 다른 패킷들은 상대방한테 잘 가고 있다는 뜻(망이 뚫려있음)이잖아! 뭣 하러 1로 박살 내!"라는 비판이 쏟아졌다.
3. Reno의 등장과 Tahoe의 멸종
몇 년 뒤 TCP Reno(레노)가 등장하며 'Fast Recovery(빠른 회복)'라는 새로운 무기를 들고나왔다.
- Tahoe의 반응 (모든 사고에 대해):
CWND = 1──▶ Slow Start. (골짜기 발생). - Reno의 반응 (3 Dup-ACK 사고 시):
CWND = ssthresh(절반)──▶ Congestion Avoidance(선형 증가). (골짜기 없이 톱니바퀴 모양 유지). - 단, Reno도 'Timeout'이라는 진짜 대형 사고 앞에서는 Tahoe처럼 똑같이 1로 박살 나고 슬로우 스타트를 한다.
┌─────────────────────────────────────────────────────────────┐
│ TCP Tahoe vs TCP Reno 그래프 차이 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 3 Dup-ACK (가벼운 접촉 사고) 발생 시! ] │
│ │
│ * TCP Tahoe (과거) │
│ 32 | /| │
│ 16 | / | / │
│ 1 | / * ─ * ─ * ─ * ─/ │
│ |____/_________________________________ │
│ └─▶ 바닥(1)으로 찍고 슬로우스타트 계단을 밟음 (답답함) │
│ │
│ * TCP Reno (현재 표준) │
│ 32 | /| │
│ 16 | / * ─ * ─ * ─ * ─ * ─ │
│ 1 | / │
│ |____/_________________________________ │
│ └─▶ 바닥으로 안 가고 16(절반)에서 바로 시작! (초고속!) │
└─────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: Tahoe는 컵에 물을 따르다가 물방울 하나가 넘쳤을 때, "아차! 넘쳤네!" 하며 컵의 물을 아예 바닥에 싹 다 버리고 처음부터 다시 1방울씩 정성스레 채워 넣는 강박증 환자입니다. 이 강박증을 고쳐서, 물방울이 넘치면 딱 넘친 만큼만 물을 살짝 덜어내고(절반) 다시 부드럽게 채우게 만든 것이 Reno의 유연함입니다.