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

  1. 본질: 칸 알고리즘은 전송 계층에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
  2. 가치: 칸 알고리즘을 이해하면 신뢰성과 지연 사이의 균형을 더 정확히 볼 수 있다.
  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 수준의 기본 대책으로 충분한지, 아니면 칸 알고리즘이 제공하는 메커니즘이 실제로 필요한지 구분해야 한다. 이후 확장 단계에서는 불필요한 재전송 해결 방안와 같은 후속 기술, 자동화 체계, 표준 호환성까지 함께 검토해야 한다.

실무 체크리스트

  1. 현재 문제의 핵심이 신뢰성 부족인지, 지연 악화인지 먼저 분리한다.
  2. 칸 알고리즘가 추가하는 복잡도와 운영 이득이 균형을 이루는지 확인한다.
  3. 도입 후에는 인접 기술인 불필요한 재전송 해결 방안와의 연계 방식을 함께 검증한다.

안티패턴

  • 칸 알고리즘의 장점만 보고 트래픽 패턴이나 운영 비용을 무시한 채 과도 도입하는 설계

  • RTT, SRTT와의 경계를 정리하지 않아 중복 투자나 정책 충돌을 만드는 설계

  • 📢 섹션 요약 비유: 칸 알고리즘을 실제로 쓰는 판단은 도구 상자를 고르는 일과 비슷하다. 좋아 보이는 도구보다 지금 문제에 맞는 도구가 중요하다.


Ⅴ. 기대효과 및 결론

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

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

📌 관련 개념 맵

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

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

[선행 개념: RTT, SRTT]
    │
    ▼
[현재 개념: 칸 알고리즘]
    │
    ├──▶ [확장 A: 불필요한 재전송 해결 방안]
    └──▶ [확장 B: 적응형 저지연 전송]

칸 알고리즘는 RTT, SRTT에서 출발해 현재 메커니즘을 정교화하고, 이후 불필요한 재전송 해결 방안와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.

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

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