핵심 인사이트 (3줄 요약)
- 본질: TCP NewReno / SACK는 전송 계층에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
- 가치: TCP NewReno / SACK를 이해하면 신뢰성과 지연 사이의 균형을 더 정확히 볼 수 있다.
- 판단 포인트: 설계 시에는 개념 자체보다 적용 조건, 운영 복잡도, 인접 기술과의 경계를 함께 판단해야 한다.
Ⅰ. 개요 및 필요성
-
개념: 단일 윈도우 내 다중 패킷 손실(Multiple Packet Loss) 발생 시 TCP Reno의 성능 저하(다중 Fast Recovery로 인한 CWND 급감 및 Timeout)를 방지하기 위해 개선된 혼잡 회피 알고리즘(NewReno)과 확장 TCP 헤더 옵션(SACK).
-
필요성: 1Gbps 초고속망이 되니까 한 번에 쏘는 윈도우 크기가 1,000개가 넘었다. 해저 케이블에서 노이즈가 살짝 튀면 1,000개 중 5개가 듬성듬성 유실된다. Reno는 이 5개를 잃어버릴 때마다 속도를 1/2, 1/4, 1/8, 1/16, 1/32로 미친 듯이 깎아 먹다가 아예 뻗어버렸다(Timeout). "야! 1,000개 보낸 것 중에 5개 잃어버린 건 '한 번의 사고'잖아! 왜 속도를 5번이나 깎아! 그리고 잃어버린 것만 딱딱 집어서 알려주면 내가 한 방에 다 다시 쏴줄 텐데 굳이 누적 ACK로 사람 숨 막히게 할 거야?!" 이 절규가 SACK과 NewReno를 탄생시켰다.
-
💡 비유:
- Reno (구형): 택배 100개를 시켰는데 10번과 20번이 안 왔습니다. 고객은 "10번 안 왔어!"라고 1차 클레임을 겁니다(속도 삭감). 회사가 10번을 보내줍니다. 그제야 고객은 "20번도 안 왔어!"라고 2차 클레임을 겁니다(속도 또 삭감). 배송 회사는 암 걸립니다.
- SACK (신형): 고객이 택배를 받자마자, "1~9번 오케이, 11~19번 오케이, 21~100번 오케이!"라고 영수증에 형광펜으로 칠해서(SACK 블록) 보냅니다. 배송 회사는 영수증을 딱 보고, **"아 10번이랑 20번 2개가 비었네? 한 번에 퀵으로 쏴줄게! (속도 삭감은 1번만)"**라며 눈부신 처리를 보여줍니다.
[TCP Reno 모델]
│
▼
[TCP NewReno / SACK]
│
└──▶ [TCP BIC / CUBIC]
- 📢 섹션 요약 비유: ** SACK(선택적 확인 응답)은 시험지 채점을 할 때 "너 3번 틀렸어 다시 풀어와" 하고 다시 풀어오면 "7번도 틀렸어 다시 풀어와" 하는 꼰대 선생님(Reno)의 방식을 부수고, 처음부터 "너 3번이랑 7번 틀렸어!"라고 한 번에 채점표를 쥐여주는 1타 강사의 명쾌한 족집게 과외입니다.
Ⅱ. 아키텍처 및 핵심 원리
1. NewReno의 융통성 (Partial ACK 판별법)
SACK 옵션이 켜져 있지 않은 낡은 PC들 사이에서도 다중 유실을 막기 위해 커널 코드를 살짝 고친 것이 NewReno다.
- Reno의 바보짓: 유실된 10번을 재전송하고, 수신자가
ACK 20을 보내면 "오 10번 잘 갔네! Fast Recovery 끝! 정상 주행!" 하고 샴페인을 터뜨렸다. 그런데 바로 다음 순간20번이 없다고 징징대면 "헐? 새 사고 터졌네? 또 절반 깎자!" - NewReno의 눈치: 수신자가
ACK 20을 보냈다 치자. NewReno는 샴페인을 안 터뜨린다. "잠깐만. 내가 아까 창문(Window) 하나에 100번까지 꽉꽉 채워 보냈는데, 쟤가 왜 100번을 불렀다 안 하고 20번을 부르지? 아! 아까 10번 날아갈 때 20번 놈도 같이 바다에 빠진 거구나 (Partial ACK 감지)!!" - 조치: NewReno는 이 상황을 '새로운 사고'로 안 보고, **'아까 난 사고 수습 중(Fast Recovery 진행 중)'**으로 간주하여 속도(CWND)를 깎지 않고 20번을 부드럽게 재전송해 준다.
2. 궁극의 치트키 SACK (Selective Acknowledgment)
TCP 통신을 처음 맺을 때(SYN 패킷 교환), Options 구역에 "나 SACK 지원함!"이라고 합의를 마친다.
- SACK Block의 구조: 수신자는 기본 영수증(
ACK=10)을 보내면서, 헤더 꼬리표(Option)에 4개의 블록을 더 적어 보낼 수 있다.- "기본적으로 10번까지 받았어. (근데 11번이 안 왔어)"
- "[SACK Option]: 근데 나 15~20번은 받았고, 25~30번도 받았어!"
- 송신자의 광속 재전송: 이 엽서를 받은 송신자는 머리를 1초도 안 굴리고, 뻥 뚫려있는 빈 공간인 11~14번과 21~24번 패킷만 핀셋으로 쏙쏙 뽑아내어 한 방에 재전송해 버린다.
- 결과적으로 타임아웃(Timeout) 따위는 절대 구경할 수 없는 무적의 다운로드 속도가 유지된다.
┌─────────────────────────────────────────────────────────────┐
│ 와이어샤크(Wireshark)에서 SACK 블록 훔쳐보기 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 일반 TCP 헤더 영역 ] │
│ Acknowledgment number: 1000 ◀─ "나 999까지 받았어! 1000번 내놔!" │
│ │
│ [ Options 영역 (SACK 켜짐) ] │
│ TCP SACK Option: │
│ - SACK Left Edge: 1500 │
│ - SACK Right Edge: 2000 ◀─ "근데 1500~1999번은 잘 도착해 있어!" │
│ │
│ ▶ 송신자의 행동: "오케이! 너 1000번부터 1499번까지만 잃어버렸구나! │
│ 내가 그 구간만 핀셋으로 뽑아서 지금 당장 쏴줄게!!" │
└─────────────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: ** SACK은 치과 의사가 쓰는 **"충치 파노라마 엑스레이"**입니다. 환자(수신자)가 "이빨 아파요(기본 ACK)"라고 징징댈 때, 의사(송신자)가 이빨을 하나하나 두드려가며 아픈 곳을 찾는 게(Reno) 아니라, 엑스레이(SACK 블록) 사진 한 장 딱 보고 "아, 왼쪽 어금니 두 개 썩었네" 하고 정확히 그 두 곳만 0.1초 만에 핀셋 치료(재전송)를 끝내버리는 현대 의학의 기적입니다.
Ⅲ. 비교 및 연결
TCP NewReno / SACK를 볼 때는 앞뒤 개념과의 경계를 함께 봐야 전체 흐름이 선명해진다. TCP Reno 모델이 기반 조건을 만든다면, TCP NewReno / SACK는 그 위에서 핵심 메커니즘을 구현하고, TCP BIC / CUBIC는 이를 더 확장된 적용 단계로 연결한다. 따라서 단일 정의보다 신뢰성과 지연에 어떤 차이를 만드는지 비교하는 것이 중요하다.
| 관점 | 선행 개념 | 현재 개념 | 확장 개념 |
|---|---|---|---|
| 초점 | TCP Reno 모델의 기반 정리 | TCP NewReno / SACK의 핵심 동작 | TCP BIC / CUBIC의 확장 적용 |
| 자원 관점 | 기본 조건 확보 | 신뢰성 최적화 | 규모와 범위 확대 |
| 판단 포인트 | 도입 가능성 확인 | 현재 메커니즘의 적합성 판단 | 운영·확장 전략 연결 |
- 📢 섹션 요약 비유: TCP NewReno / SACK는 비슷한 기술들 사이의 차선을 구분하는 분기점과 같다. 어디서 갈라지는지 알아야 헷갈리지 않는다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 TCP NewReno / SACK를 단독 개념으로 외우기보다 어떤 병목을 줄이기 위한 선택인지 먼저 따져야 한다. 특히 TCP Reno 모델 수준의 기본 대책으로 충분한지, 아니면 TCP NewReno / SACK가 제공하는 메커니즘이 실제로 필요한지 구분해야 한다. 이후 확장 단계에서는 TCP BIC / CUBIC와 같은 후속 기술, 자동화 체계, 표준 호환성까지 함께 검토해야 한다.
실무 체크리스트
- 현재 문제의 핵심이 신뢰성 부족인지, 지연 악화인지 먼저 분리한다.
- TCP NewReno / SACK가 추가하는 복잡도와 운영 이득이 균형을 이루는지 확인한다.
- 도입 후에는 인접 기술인 TCP BIC / CUBIC와의 연계 방식을 함께 검증한다.
안티패턴
-
TCP NewReno / SACK의 장점만 보고 트래픽 패턴이나 운영 비용을 무시한 채 과도 도입하는 설계
-
TCP Reno 모델와의 경계를 정리하지 않아 중복 투자나 정책 충돌을 만드는 설계
-
📢 섹션 요약 비유: TCP NewReno / SACK를 실제로 쓰는 판단은 도구 상자를 고르는 일과 비슷하다. 좋아 보이는 도구보다 지금 문제에 맞는 도구가 중요하다.
Ⅴ. 기대효과 및 결론
TCP NewReno / SACK는 전송 계층을 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 신뢰성 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 TCP BIC / CUBIC, 적응형 저지연 전송, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 적응형 저지연 전송 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.
- 📢 섹션 요약 비유: TCP NewReno / SACK는 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| TCP Reno 모델 | 현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다. |
| 세그먼트 (Segment) | 전송 계층이 다루는 기본 단위다. |
| 흐름 제어 (Flow Control) | 수신자 처리 속도를 넘지 않게 조절한다. |
| TCP BIC / CUBIC | 현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다. |
📈 관련 키워드 및 발전 흐름도
[선행 개념: TCP Reno 모델]
│
▼
[현재 개념: TCP NewReno / SACK]
│
├──▶ [확장 A: TCP BIC / CUBIC]
└──▶ [확장 B: 적응형 저지연 전송]
TCP NewReno / SACK는 TCP Reno 모델에서 출발해 현재 메커니즘을 정교화하고, 이후 TCP BIC / CUBIC와 적응형 저지연 전송 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.
👶 어린이를 위한 3줄 비유 설명
- 물건을 보낼 때 받는 사람이 너무 빨리 받으면 놓칠 수 있어요.
- 이 개념은 천천히 보낼지, 다시 보낼지, 길이 막히면 멈출지를 정해줘요.
- 그래서 멀리 보내도 덜 잃어버리고 더 안정적으로 도착해요.