핵심 인사이트 (3줄 요약)
- 본질: 칸 알고리즘은 전송 계층에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
- 가치: 칸 알고리즘을 이해하면 신뢰성과 지연 사이의 균형을 더 정확히 볼 수 있다.
- 판단 포인트: 설계 시에는 개념 자체보다 적용 조건, 운영 복잡도, 인접 기술과의 경계를 함께 판단해야 한다.
Ⅰ. 개요 및 필요성
-
개념: TCP의 RTT(Round Trip Time) 측정 시, 재전송된 세그먼트에 대한 응답(ACK)을 RTT 샘플 산출에서 배제하고, 재전송 발생 시 RTO를 지수 함수적으로 증가시키는 혼잡 회피 알고리즘 (RFC 2988).
-
필요성: 내 PC가 구글에 패킷을 쐈다. 3초(RTO)를 기다렸는데 영수증이 안 온다. 나는 눈물을 머금고 패킷을 다시(재전송) 쐈다. 그런데 재전송을 쏘자마자 0.1초 뒤에 띠링~ 하고 영수증이 도착했다! 내 PC의 멘탈은 박살 난다. "이 영수증... 아까 3초 전에 쐈던 1번이 지각해서 이제 온 걸까? 아니면 방금 0.1초 전에 재전송한 2번이 빛의 속도로 튕겨서 온 걸까?" 만약 1번이 온 건데 2번이 온 줄 알고 "오! 이 동네 핑 0.1초 짱 빠르네!" 착각하고 타이머를 0.1초로 확 줄여버리면? 다음번 패킷부터는 0.1초마다 미친 듯이 재전송 폭풍을 갈겨대어 인터넷이 폭파된다. 이 혼돈(Ambiguity)을 멈출 절대자의 룰이 필요했다.
-
💡 비유: 칸 알고리즘의 딜레마는 **"택배 중복 발송의 헷갈림"**과 같습니다.
- 내가 쇼핑몰에서 옷을 시켰는데 1주일이 지나도 안 와서 "다시 보내주세요(재전송)"라고 클레임을 걸었습니다. 쇼핑몰은 오늘 새 옷을 다시 보냈습니다.
- 그런데 내일 덜컥 택배가 도착했습니다!
- 딜레마: "이 택배는 1주일 전에 출발해서 8일 만에 온 걸까? 아니면 어제 새로 보낸 게 하루 만에 특급으로 온 걸까?" 박스 겉면만 봐서는 도저히 알 길이 없습니다. 배송 기간(RTT)을 측정할 수가 없습니다!
[RTT, SRTT]
│
▼
[칸 알고리즘]
│
└──▶ [불필요한 재전송 해결 방안]
- 📢 섹션 요약 비유: ** 칸 알고리즘은 오염된 증거물에 대한 **"법정 증거 능력을 원천 무효화"**하는 판사의 철퇴입니다. "출처가 확실하지 않은 영수증(재전송된 ACK)은 우리 동네 평균 속도(SRTT)를 계산하는 데 단 한 방울도 섞지 말고 즉각 폐기하라!"는 가차 없는 위생 관리법입니다.
Ⅱ. 아키텍처 및 핵심 원리
1. 제1법칙: 재전송 ACK는 쓰레기통으로 (Ignore)
- 송신자가 한 번이라도
재전송(Retransmit)버튼을 누른 시퀀스 번호에 대해서는, 나중에 돌아오는 ACK를 RTT 샘플로 절대 채택하지 않는다. - 이 규칙 덕분에 TCP의 초시계(RTO)는 유령 패킷에 속아 비정상적으로 짧아지는(그래서 미친 재전송 폭풍을 유발하는) 대참사를 완벽하게 피하게 되었다.
2. 제2법칙: 타이머 2배 뻥튀기 (Exponential Backoff)
제1법칙만 쓰면 치명적인 모순이 생긴다. 네트워크가 진짜 막혀서 재전송을 했는데, 재전송 영수증을 RTT 계산에서 무시해 버리면? 내 PC의 타이머(RTO)는 갱신되지 않고 영원히 과거의 짧은 시간(예: 1초)으로 고정되어 버린다! 길이 막혔는데 타이머를 늘려주지 않으면 계속 1초마다 재전송을 때릴 것이다.
- 칸의 천재적인 2번째 룰: "야! 영수증 무시하는 건 좋은데, 네가 재전송을 했다는 것 자체가 지금 톨게이트 꽉 막혔다는 증거잖아! 재전송 버튼을 누를 때마다 무조건 기존 타이머(RTO)를 2배로 늘려버려!"
- 최초 RTO가 1초였다면 -> 첫 재전송 시 2초 대기 -> 두 번째 재전송 시 4초 대기 -> 8초 대기 -> 16초 대기...
- 길이 막혔을 때 스스로 숨을 꾹 참으며 대기 시간을 늘려주는 이 타이머 백오프(Timer Backoff) 기술 덕분에 라우터들은 한숨을 돌릴 수 있게 되었다.
┌─────────────────────────────────────────────────────────────┐
│ 칸 알고리즘(Karn's Algo)의 타임아웃 방어 시퀀스 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 평소 ] (현재 RTO 타이머 = 1초) │
│ - 패킷 전송 -> ACK 무사 도착! -> RTT 측정해서 1.1초로 갱신함. │
│ │
│ [ 꽉 막힌 지옥 ] │
│ - 패킷 전송 -> 1초 지남 -> 타임아웃 펑! (패킷 잃어버렸어!) │
│ - Karn의 개입 1: "오케이 재전송 갈겨! 대신 RTO를 2초(2배)로 늘려 놔!"│
│ - 2초 지남 -> 타임아웃 또 펑! │
│ - Karn의 개입 2: "또 재전송해! RTO는 4초(2배)로 또 늘려!!" │
│ │
│ [ 기적의 영수증 도착 ] │
│ - 재전송 후 드디어 ACK 도착!! │
│ - Karn의 철퇴: "야! 이거 첫 번째 건지 두 번째 건지 모르잖아! │
│ 얘는 RTT 평균 계산식에 절.대. 넣지 마!! 무시해!" │
└─────────────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: ** 타이머 백오프(Timer Backoff)는 화난 여자친구에게 **"다시 카톡 보내는 타이밍"**과 같습니다. 10분 만에 답장이 안 온다고 다시 카톡(재전송)을 보냅니다. 또 안 오면 이번엔 10분이 아니라 20분을 참고, 또 안 오면 40분을 참고 기다려주는 것이 둘 사이(네트워크)의 완전한 파국을 막는 고도의 눈치 게임(Karn's Algorithm)입니다.
Ⅲ. 비교 및 연결
칸 알고리즘을 볼 때는 앞뒤 개념과의 경계를 함께 봐야 전체 흐름이 선명해진다. RTT, SRTT가 기반 조건을 만든다면, 칸 알고리즘은 그 위에서 핵심 메커니즘을 구현하고, 불필요한 재전송 해결 방안은 이를 더 확장된 적용 단계로 연결한다. 따라서 단일 정의보다 신뢰성과 지연에 어떤 차이를 만드는지 비교하는 것이 중요하다.
| 관점 | 선행 개념 | 현재 개념 | 확장 개념 |
|---|---|---|---|
| 초점 | RTT, SRTT의 기반 정리 | 칸 알고리즘의 핵심 동작 | 불필요한 재전송 해결 방안의 확장 적용 |
| 자원 관점 | 기본 조건 확보 | 신뢰성 최적화 | 규모와 범위 확대 |
| 판단 포인트 | 도입 가능성 확인 | 현재 메커니즘의 적합성 판단 | 운영·확장 전략 연결 |
- 📢 섹션 요약 비유: 칸 알고리즘은 비슷한 기술들 사이의 차선을 구분하는 분기점과 같다. 어디서 갈라지는지 알아야 헷갈리지 않는다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 칸 알고리즘을 단독 개념으로 외우기보다 어떤 병목을 줄이기 위한 선택인지 먼저 따져야 한다. 특히 RTT, SRTT 수준의 기본 대책으로 충분한지, 아니면 칸 알고리즘이 제공하는 메커니즘이 실제로 필요한지 구분해야 한다. 이후 확장 단계에서는 불필요한 재전송 해결 방안와 같은 후속 기술, 자동화 체계, 표준 호환성까지 함께 검토해야 한다.
실무 체크리스트
- 현재 문제의 핵심이 신뢰성 부족인지, 지연 악화인지 먼저 분리한다.
- 칸 알고리즘가 추가하는 복잡도와 운영 이득이 균형을 이루는지 확인한다.
- 도입 후에는 인접 기술인 불필요한 재전송 해결 방안와의 연계 방식을 함께 검증한다.
안티패턴
-
칸 알고리즘의 장점만 보고 트래픽 패턴이나 운영 비용을 무시한 채 과도 도입하는 설계
-
RTT, SRTT와의 경계를 정리하지 않아 중복 투자나 정책 충돌을 만드는 설계
-
📢 섹션 요약 비유: 칸 알고리즘을 실제로 쓰는 판단은 도구 상자를 고르는 일과 비슷하다. 좋아 보이는 도구보다 지금 문제에 맞는 도구가 중요하다.
Ⅴ. 기대효과 및 결론
칸 알고리즘은 전송 계층을 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 신뢰성 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 불필요한 재전송 해결 방안, 적응형 저지연 전송, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 적응형 저지연 전송 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.
- 📢 섹션 요약 비유: 칸 알고리즘은 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| RTT, SRTT | 현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다. |
| 세그먼트 (Segment) | 전송 계층이 다루는 기본 단위다. |
| 흐름 제어 (Flow Control) | 수신자 처리 속도를 넘지 않게 조절한다. |
| 불필요한 재전송 해결 방안 | 현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다. |
📈 관련 키워드 및 발전 흐름도
[선행 개념: RTT, SRTT]
│
▼
[현재 개념: 칸 알고리즘]
│
├──▶ [확장 A: 불필요한 재전송 해결 방안]
└──▶ [확장 B: 적응형 저지연 전송]
칸 알고리즘는 RTT, SRTT에서 출발해 현재 메커니즘을 정교화하고, 이후 불필요한 재전송 해결 방안와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.
👶 어린이를 위한 3줄 비유 설명
- 물건을 보낼 때 받는 사람이 너무 빨리 받으면 놓칠 수 있어요.
- 이 개념은 천천히 보낼지, 다시 보낼지, 길이 막히면 멈출지를 정해줘요.
- 그래서 멀리 보내도 덜 잃어버리고 더 안정적으로 도착해요.