문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

빠른 재전송 기법 | |
이름 | 빠른 재전송 기법 |
영문명 | Fast Retransmit |
분류 | TCP 혼잡 제어 기법 |
주요 목적 | 패킷 손실 감지 및 복구 시간 단축 |
핵심 동작 | 중복 ACK 수신 시 재전송 |
관련 프로토콜 | |
표준 | |
상세 정보 | |
동작 임계값 | 3개의 중복 ACK |
재전송 대상 | 손실로 추정된 세그먼트 |
혼잡 창 크기 조정 | |
기존 [[타임아웃]] 방식과 차이 | RTT 변동에 덜 민감, 더 빠른 손실 복구 |
발전 형태 | 빠른 회복 기법과 함께 사용 |
장점 | |
단점/제약 | 연속 패킷 손실 시 효율 저하, ACK 자체 손실 가능성 |
주요 적용 | 대부분의 현대 TCP 구현체 (TCP Reno, TCP NewReno 등) |

빠른 재전송 기법은 TCP와 같은 신뢰성 있는 전송 프로토콜에서 패킷 손실을 더 빠르게 감지하고 복구하기 위한 메커니즘이다. 전통적인 타임아웃 기반 재전송 방식은 손실이 발생한 후 미리 정해진 시간(RTO)이 지나야 재전송을 시작하기 때문에, 특히 왕복 지연 시간(RTT)이 긴 네트워크에서 성능 저하를 초래한다. 빠른 재전송은 이러한 지연을 줄이기 위해 중복 ACK 신호를 활용하여 타임아웃을 기다리지 않고 조기에 패킷 손실을 추정하고 재전송을 유발한다.
이 기법의 핵심 아이디어는 수신자가 순서가 바뀐 패킷을 받을 때마다 마지막으로 정상 수신한 시퀀스 번호에 대한 ACK를 반복적으로 보내는 것을 송신자가 모니터링하는 것이다. 일반적으로 연속된 세 개의 중복 ACK(총 네 개의 동일한 ACK)가 도착하면, 해당 ACK가 요청하는 다음 데이터 패킷이 손실되었다고 간주하고 즉시 재전송한다. 이는 네트워크의 일시적인 혼잡에 의한 단일 패킷 손실을 효율적으로 처리하도록 설계되었다.
빠른 재전송은 TCP 혼잡 제어 알고리즘의 핵심 구성 요소로, TCP Reno 및 그 이후의 대부분의 표준 TCP 구현에 통합되어 있다. 이 기법은 애플리케이션의 처리량을 높이고 전송 지연을 줄이는 데 기여하며, 현대 인터넷의 효율적인 데이터 전송을 가능하게 하는 중요한 기술 중 하나이다.

빠른 재전송 기법의 기본 원리는, 기존의 타임아웃 기반 재전송보다 더 빠르게 패킷 손실을 감지하고 복구하는 데 있다. 핵심 아이디어는 중복된 ACK 패킷을 손실의 징후로 해석하는 것이다. 송신자는 수신자로부터 연속적인 데이터 세그먼트에 대한 정상적인 ACK를 받는다. 그러나 특정 세그먼트가 손실되거나 순서가 뒤바뀌어 도착하면, 수신자는 마지막으로 정상적으로 받은 순차적인 데이터에 대한 ACK를 반복적으로 보낸다.
이러한 중복 ACK가 미리 정해진 임계값(일반적으로 3회)에 도달하면, 송신자는 해당 ACK가 가리키는 다음 데이터 세그먼트가 손실되었다고 판단한다. 이후 송신자는 타임아웃이 발생하기를 기다리지 않고 즉시 해당 세그먼트를 재전송한다. 이 과정은 TCP의 혼잡 제어 알고리즘과 연동되어, 재전송 후 혼잡 창 크기를 조정한다[1].
개념 | 설명 |
|---|---|
재전송 트리거 | 중복 [[확인응답 |
손실 감지 속도 | 왕복 지연 시간(RTT)에 기반한 타임아웃보다 일반적으로 빠름 |
주요 가정 | 중복 ACK는 단일 패킷 손실로 인해 발생한다는 가정에 기반함 |
이 원리는 네트워크 지연이 크거나 변동성이 높은 환경에서 특히 효과적이다. 타임아웃 값은 왕복 지연 시간의 추정치에 여유를 더해 설정되므로, 실제 패킷 손실이 발생해도 타임아웃이 만료되기까지 상당한 시간이 소요될 수 있다. 빠른 재전송은 이러한 수동적인 대기를 피하고 능동적으로 손실을 복구함으로써 전체 전송 성능을 향상시킨다.
재전송 트리거 조건은 빠른 재전송 기법이 기존의 타임아웃 기반 재전송과 구분되는 핵심 메커니즘이다. 이 기법은 패킷 손실을 더 빠르게 감지하기 위해, 수신 측으로부터 오는 확인응답 패킷의 특정 패턴을 신호로 삼는다.
주요 트리거는 중복 확인응답의 수신이다. 송신 측이 동일한 시퀀스 번호를 가진 확인응답을 연속적으로 세 번 받으면[2], 해당 확인응답이 요청하는 다음 데이터 패킷이 손실되었다고 간주하고 즉시 재전송을 시작한다. 이는 정상적인 흐름에서는 발생하지 않는 현상으로, 수신 측이 예상한 패킷이 도착하지 않아 이미 수신한 마지막 패킷에 대한 확인응답을 반복적으로 보내기 때문에 발생한다.
조건 | 설명 | 재전송 대상 |
|---|---|---|
3개의 중복 확인응답 | 동일한 시퀀스 번호를 가진 확인응답을 연속 3회 수신 | 손실로 추정된 단일 패킷 |
부분적인 확인응답 (SACK 사용 시) | SACK 옵션을 통해 수신 측이 특정 데이터 블록의 수신을 보고하면, 해당 블록 사이의 갭을 식별 | 손실로 식별된 하나 이상의 패킷 |
이 조건은 네트워크의 일시적인 혼잡에 의한 단일 패킷 손실에 최적화되어 있다. 반면, 연속적인 다중 패킷 손실이나 버퍼 오버플로우로 인한 급격한 변화에는 타임아웃이 여전히 주요 재전송 트리거로 작동한다. 따라서 빠른 재전송은 타임아웃 메커니즘을 대체하지 않고 보완하는 역할을 한다.
빠른 재전송 기법의 핵심은 중복 확인 응답을 효율적으로 감지하고 해석하는 ACK 관리 방식에 있다. 일반적인 TCP에서는 누적 ACK 방식을 사용하여 특정 시퀀스 번호까지의 모든 데이터가 정상 수신되었음을 알린다. 빠른 재전송은 이 기본적인 ACK 관리 방식을 확장하여, 연속되지 않은 세그먼트의 도착을 나타내는 중복 ACK의 패턴을 특별한 신호로 활용한다.
구체적으로, 수신자는 예상된 순서와 다른 세그먼트가 도착할 때마다, 마지막으로 정상 수신한 시퀀스 번호에 대한 중복 ACK를 송신측에 보낸다. 송신측은 이러한 중복 ACK를 단순한 중복이 아닌, 특정 패킷이 손실되었을 가능성을 나타내는 지표로 해석한다. 일반적으로 3개의 중복 ACK[3]가 연속으로 수신되면, 해당 ACK가 가리키는 다음 시퀀스 번호의 데이터 패킷이 손실되었다고 판단하고, 재전송 타이머가 만료되기 전에 즉시 해당 패킷을 재전송한다.
이 방식은 기존의 타임아웃 기반 재전송과 근본적으로 다르다. 타임아웃은 네트워크 왕복 지연 시간에 크게 의존하며, 일반적으로 수백 밀리초에서 수초에 이르는 긴 대기 시간을 필요로 한다. 반면, 중복 ACK 기반의 ACK 관리는 데이터 흐름 내에서 실시간으로 피드백을 생성하므로, 손실 감지 및 복구까지의 지연을 크게 단축시킨다. 이는 혼잡 창 크기를 급격히 줄이는 혼잡 회피 알고리즘의 동작을 유발하기 전에 손실을 신속히 복구하여 전체 처리량을 유지하는 데 기여한다.

구현 방식은 주로 TCP에서 사용되는 두 가지 핵심 메커니즘, TCP Fast Retransmit과 Selective Acknowledgment (SACK)을 중심으로 설명할 수 있다. 이들은 모두 빠른 재전송의 기본 원리를 바탕으로 하지만, 패킷 손실을 처리하는 구체적인 방법에서 차이를 보인다.
첫 번째 방식인 TCP Fast Retransmit은 중복 ACK의 수를 기준으로 한다. 수신자는 순서가 바뀐 패킷이 도착할 때마다 마지막으로 정상 수신된 시퀀스 번호에 대한 중복 ACK을 보낸다. 송신자는 이 중복 ACK을 특정 임계값(일반적으로 3개) 이상 연속해서 받으면, 해당 ACK이 가리키는 다음 패킷이 손실되었다고 판단하고 타임아웃을 기다리지 않고 즉시 해당 패킷을 재전송한다. 이 방식은 표준 TCP의 필수 구현 요소이며, 단일 패킷 손실을 빠르게 복구하는 데 효과적이다.
두 번째 방식인 Selective Acknowledgment (SACK)은 더 정교한 정보 교환을 통해 동시에 여러 개의 패킷 손실을 효율적으로 처리한다. SACK 옵션을 사용하면, 수신자는 연속적으로 수신된 블록과 수신되지 않은 간격(갭)에 대한 정확한 정보를 ACK에 담아 송신자에게 알려줄 수 있다. 송신자는 이 정보를 바탕으로 정확히 어떤 패킷들이 손실되었는지를 파악하고, 여러 개의 손실된 패킷을 선택적으로 한 번에 재전송할 수 있다. 이는 연속적인 패킷 손실 상황에서 Fast Retransmit만으로는 발생할 수 있는 성능 저하를 크게 완화한다.
구현 방식 | 주요 동작 원리 | 장점 |
|---|---|---|
연속된 중복 ACK(보통 3개) 감지 시 재전송 | 구현이 간단하고, 단일 패킷 손실에 대한 복구가 빠름 | |
수신된 데이터 블록 정보(SACK 옵션)를 활용한 선택적 재전송 | 여러 개의 손실된 패킷을 효율적으로 복구하여 처리량 향상에 유리 |
두 방식은 상호 배타적이지 않으며, 현대 대부분의 TCP 스택에서는 SACK 옵션을 활성화한 상태에서 Fast Retransmit 메커니즘을 함께 사용한다. 이렇게 함으로써 단일 및 복수 패킷 손실 시나리오 모두에서 네트워크 혼잡 제어 알고리즘과 협력하며 최적의 성능을 달성하려고 한다.
TCP Fast Retransmit은 빠른 재전송 기법의 핵심적인 구현 방식 중 하나이다. 이 방식은 TCP의 전통적인 타임아웃 기반 재전송 메커니즘의 단점을 보완하기 위해 고안되었다. 표준 TCP는 세그먼트 손실을 감지하기 위해 RTT(왕복 시간)를 기반으로 계산된 재전송 타임아웃 값을 사용한다. 그러나 네트워크 지연이 변동할 경우 RTT 추정이 부정확해져 타임아웃이 불필요하게 길어질 수 있으며, 이는 처리량을 현저히 저하시킨다.
TCP Fast Retransmit은 세 개의 중복 ACK 패킷을 수신하는 것을 패킷 손실의 강력한 지표로 간주한다. 송신 측이 동일한 시퀀스 번호를 가진 ACK를 연속적으로 세 번 받으면, 해당 ACK가 확인응답하는 다음 예상 시퀀스 번호의 데이터 세그먼트가 손실되었다고 판단하고, 타임아웃을 기다리지 않고 즉시 해당 세그먼트를 재전송한다. 이는 손실 감지까지 걸리는 시간을 크게 단축시킨다.
이 기법의 동작을 구체적으로 설명하면 다음과 같다. 수신 측은 순서대로 도착하지 않은 세그먼트를 받을 때마다 마지막으로 정상적으로 받은 순차적인 데이터에 대한 ACK를 반복적으로 보낸다. 예를 들어, 송신 측이 패킷 1, 2, 3, 4, 5를 보냈을 때 패킷 2가 손실되고 패킷 3, 4, 5가 도착하면, 수신 측은 패킷 1에 대한 ACK를 세 번 추가로 보내게 된다. 송신 측이 이 중복 ACK를 세 번 받는 순간 패킷 2의 손실을 확신하고 재전송을 시작한다.
단계 | 송신 측 동작 | 수신 측 동작 | 네트워크 상태 |
|---|---|---|---|
1 | 패킷 1, 2, 3, 4, 5 전송 | 패킷 1 수신 후 ACK 2 전송 | 패킷 2 손실 |
2 | - | 패킷 3 수신 후 ACK 2 전송 (중복 #1) | - |
3 | - | 패킷 4 수신 후 ACK 2 전송 (중복 #2) | - |
4 | 중복 ACK 2를 3회 수신 | 패킷 5 수신 후 ACK 2 전송 (중복 #3) | - |
5 | 패킷 2 재전송 | - | - |
6 | - | 패킷 2 수신 후 ACK 6 전송 | - |
이 방식은 타임아웃이 발생할 때까지의 공백 시간을 제거하여 전송 지연을 줄이고 대역폭 활용도를 높인다. 그러나 연속적인 패킷 손실이 발생하거나 윈도우 크기가 매우 작은 경우에는 충분한 중복 ACK가 생성되지 않아 기법이 동작하지 않을 수 있으며, 이때는 기존의 타임아웃 메커니즘에 의존하게 된다.
Selective Acknowledgment은 TCP의 빠른 재전송 기법을 보완하는 옵션이다. 기존의 누적 확인 응답 방식은 수신자가 연속된 데이터 세그먼트 중 일부만 손실되어도, 손실된 시퀀스 번호 이후의 모든 데이터에 대해 중복 확인 응답을 보내야 했다. 이로 인해 여러 개의 데이터 세그먼트가 한꺼번에 손실된 경우, 송신자가 모든 손실을 정확히 파악하고 효율적으로 재전송하기 어려웠다.
SACK 옵션은 TCP 헤더에 포함되어, 수신자가 비연속적으로 수신한 데이터 블록의 정확한 범위를 송신자에게 알려준다. 이를 통해 송신자는 어떤 특정 패킷들이 손실되었는지 정확히 식별할 수 있다. 예를 들어, 수신자가 시퀀스 번호 1000-1999, 3000-3999의 데이터는 성공적으로 받았지만, 그 사이의 2000-2999 데이터는 받지 못했다면, SACK 옵션을 통해 이 두 개의 수신된 데이터 블록 정보를 함께 전송한다.
특징 | 기존 누적 ACK | SACK |
|---|---|---|
손실 정보 | 모호함 | 정확한 블록 정보 |
다중 손실 대처 | 비효율적 | 효율적 |
필요한 정보 | 마지막으로 성공적으로 수신한 바이트 번호 | 수신된 각 데이터 블록의 시작 및 끝 시퀀스 번호 |
이 방식은 특히 대역폭 지연 곱이 큰 네트워크에서 여러 패킷 손실이 발생할 때 처리량을 크게 향상시킨다. 송신자는 한 번의 재전송 타임아웃 주기 안에 여러 개의 손실된 세그먼트를 선택적으로 재전송할 수 있어, 네트워크 활용도를 높인다. SACK의 동작은 수신자와 송신자 모두에서 해당 옵션을 협상하고 지원해야 하며, 현대 대부분의 TCP 구현체에서 표준적으로 사용된다.

빠른 재전송 기법의 도입은 기존의 타임아웃 기반 재전송 방식에 비해 두드러진 성능 향상을 가져왔다. 가장 큰 효과는 지연 시간의 감소이다. 전통적인 방식은 패킷 손실을 감지하기 위해 고정된 RTT(왕복 시간)에 기반한 타임아웃을 기다려야 했다. 이는 네트워크 상태와 무관하게 최소 수백 밀리초의 지연을 필수적으로 발생시켰다. 반면, 빠른 재전송은 중복 ACK 신호를 즉시 활용하여 손실을 판단하고 재전송을 개시하므로, 지연 시간을 RTT 수준으로 크게 단축시킨다. 이는 특히 대화형 애플리케이션이나 실시간성이 요구되는 환경에서 사용자 체감 성능을 획기적으로 개선한다.
두 번째 주요 효과는 처리량 증가이다. 타임아웃 기간 동안 송신 측은 불확실성으로 인해 전송을 멈추거나 혼잡 윈도우 크기를 급격히 줄이는 경우가 많았다. 이로 인해 링크 대역폭이 충분함에도 불구하고 실제 데이터 전송률이 낮아지는 문제가 발생했다. 빠른 재전송은 손실을 빠르게 복구하여 송신 측이 지속적으로 데이터를 전송할 수 있도록 돕는다. 결과적으로 네트워크 자원의 활용도가 높아지고, 전체적인 데이터 전송 효율이 향상된다.
성능 향상 정도는 네트워크 환경에 따라 차이를 보인다. 다음 표는 일반적인 조건에서의 개선 효과를 요약한 것이다.
성능 지표 | 기존 타임아웃 방식 | 빠른 재전송 적용 시 | 주요 원인 |
|---|---|---|---|
손실 복구 지연 | 1 RTT 이상 (타임아웃 값에 따름) | 약 1 RTT 미만 | 중복 ACK를 통한 즉시 감지 |
평균 처리량 | 낮음 (전송 정지 기간 발생) | 높음 (지속적 전송 유지) | 혼잡 회피 알고리즘의 공격적 감소 방지 |
대역폭 활용도 | 변동 큼 | 안정적이고 높음 | 빠른 혼잡 제어 조정 |
종합하면, 이 기법은 패킷 손실에 대한 반응성을 높여 애플리케이션의 전반적인 응답 속도를 개선하고, 네트워크 경로의 실제 처리 용량을 더 효과적으로 끌어내는 역할을 한다.
빠른 재전송 기법의 핵심 목표는 패킷 손실로 인한 데이터 전송 지연을 최소화하는 것이다. 기존의 타임아웃 기반 재전송 방식은 손실을 감지하기까지 긴 대기 시간이 필요하지만, 빠른 재전송은 중복 ACK 신호를 즉시 활용하여 손실을 빠르게 판단하고 재전송을 개시한다. 이로 인해 애플리케이션 계층에서 경험하는 전체 지연 시간이 크게 단축된다.
지연 감소 효과는 특히 왕복 지연 시간이 크거나 패킷 손실율이 높은 네트워크 환경에서 두드러진다. 예를 들어, 위성 통신이나 장거리 광섬유 링크에서는 한 번의 타임아웃이 수백 밀리초에서 수초에 이를 수 있다. 빠른 재전송은 이러한 긴 대기 시간을 수신측에서 보내는 중복 ACK 수신 직후, 일반적으로 몇 밀리초 내에 재전송을 트리거함으로써 사실상 제거한다.
지연 요소 | 기존 타임아웃 방식 | 빠른 재전송 방식 |
|---|---|---|
손실 감지까지 소요 시간 | RTO(최소 수백 ms~수초) | 중복 ACK 수신 시(즉시~수 ms) |
재전송 결정 후 대기 시간 | 추가 대기 없음 | 추가 대기 없음 |
전체 지연 영향 | 매우 큼 | 매우 작음 |
결과적으로, TCP를 사용하는 대화형 애플리케이션(예: 원격 데스크톱, 온라인 게임)이나 실시간성이 요구되는 데이터 스트리밍에서 사용자 체감 성능이 향상된다. 데이터 흐름의 공백이 짧아지고, 처리량 저하 기간도 줄어들어 전체적인 데이터 전송 효율성이 높아진다.
빠른 재전송 기법은 네트워크 혼잡으로 인한 불필요한 타임아웃 대기를 줄여, 전체적인 네트워크 처리량을 증가시키는 효과를 가져온다. 기존 TCP의 표준 재전송 방식은 패킷 손실을 감지하기 위해 RTT 기반의 타임아웃을 기다려야 했으며, 이 대기 시간 동안 송신자는 새로운 데이터 전송을 멈추거나 매우 느린 속도로 진행해야 했다. 빠른 재전송은 중복 ACK를 통해 손실을 조기에 감지하고 즉시 재전송함으로써, 이 유휴 시간을 크게 단축하고 링크를 더 효율적으로 활용하게 한다.
처리량 증가의 핵심 메커니즘은 송신 윈도우의 빠른 전진에 있다. TCP 슬라이딩 윈도우 프로토콜에서, 수신 측이 기대하는 다음 시퀀스 번호보다 높은 번호의 패킷이 도착하면 중복 ACK가 발생한다. 세 개의 중복 ACK는 단일 패킷 손실을 강력히 시사하며, 송신자는 타임아웃을 기다리지 않고 해당 패킷을 재전송한다. 이 재전송이 성공적으로 확인되면, 송신 윈도우는 손실이 해결된 시점까지 전진할 수 있어, 데이터 흐름의 정체를 해소하고 지속적인 고속 전송을 가능하게 한다.
성능 향상 정도는 네트워크 조건에 따라 다르다. 다음 표는 일반적인 조건에서의 처리량 비교를 보여준다.
조건 | 표준 TCP 재전송 (타임아웃) | 빠른 재전송 적용 TCP |
|---|---|---|
단일 패킷 손실 시 대기 시간 | RTT의 배수 (예: 1-2 RTT) | 거의 0에 가까움 |
윈도우 전진 속도 | 느림 | 빠름 |
평균 처리량 | 상대적으로 낮음 | 상대적으로 높음 |
특히 왕복 지연 시간이 크거나 패킷 손실률이 높은 네트워크 환경에서 그 효과가 두드러진다. 위성 통신이나 장거리 광역 네트워크와 같이 RTT가 긴 링크에서는 타임아웃 대기 시간이 수백 밀리초에 이를 수 있어, 빠른 재전송 없이는 처리량이 극도로 저하된다. 빠른 재전송은 이러한 환경에서도 데이터 흐름의 연속성을 유지시켜, 가능한 최대 대역폭에 가까운 처리량을 유지하는 데 기여한다.

빠른 재전송 기법은 네트워크 성능을 개선하지만, 몇 가지 제한사항과 문제점을 동반한다. 가장 대표적인 문제는 네트워크 혼잡 상황에서의 잘못된 재전송이다. 기본적으로 세 개의 중복 ACK를 손실 징후로 판단하지만, 패킷의 순서 재배열로 인해 중복 ACK가 발생할 수도 있다. 이 경우 실제 패킷 손실이 없음에도 불구하고 불필요한 재전송이 트리거되어 대역폭을 낭비하고 불필요한 네트워크 부하를 초래할 수 있다.
이 기법은 네트워크 혼잡 제어 메커니즘과 긴밀하게 연동되어 작동한다. 빠른 재전송이 발생하면, 이는 혼잡의 간접적인 신호로 간주되어 혼잡 윈도우 크기가 감소한다. 따라서 잘못된 재전송은 처리량을 불필요하게 감소시키는 결과를 초래할 수 있다. 또한, 연속적인 패킷 손실이 발생하는 시나리오에서는 그 효과가 제한적일 수 있다. 빠른 재전송은 일반적으로 한 번에 하나의 패킷 손실을 효율적으로 복구하도록 설계되었기 때문이다.
다음 표는 주요 제한사항과 그 영향을 요약한 것이다.
제한사항 | 주요 원인 | 잠재적 영향 |
|---|---|---|
잘못된 재전송 | 패킷 순서 재배열, 지연 변동 | 대역폭 낭비, 불필요한 혼잡 윈도우 감소 |
연속 패킷 손실 대응력 부족 | 윈도우 내 다중 손실 | 빠른 회복 단계 진입 지연, 성능 저하 |
혼잡 신호와의 혼동 | 손실 원인 구분 불가(혼잡 vs 오류) | 공정성 문제, 불필요한 전송 속도 조절 |
또한, 이 기법은 주로 TCP와 같은 신뢰성 있는 프로토콜 환경에서 효과적이다. UDP 기반의 프로토콜이나 매우 짧은 흐름에서는 중복 ACK를 충분히 수집하기 어려워 활용이 제한될 수 있다. 최근의 고대역폭, 고지연 네트워크 환경에서는 이러한 전통적인 트리거 조건(예: 3개의 중복 ACK)이 최적이 아닐 수 있어, 적응형 임계값 조정에 대한 연구가 진행되고 있다[4].
빠른 재전송 기법은 중복 ACK를 기반으로 패킷 손실을 판단하기 때문에, 패킷 손실이 아닌 다른 원인으로 중복 ACK가 발생하면 불필요한 재전송을 유발할 수 있습니다. 이를 잘못된 재전송이라고 합니다. 가장 흔한 원인은 패킷 재정렬입니다. 네트워크 경로가 변경되거나 로드 밸런서를 통과하는 과정에서 패킷의 도착 순서가 뒤바뀌면, 수신자는 예상 시퀀스 번호보다 큰 번호의 패킷을 받게 됩니다. 이 경우 수신자는 예상 번호에 대한 중복 확인 응답을 반복적으로 보내게 되고, 송신자는 이를 패킷 손실로 오인하여 재전송을 실행합니다. 실제로 원본 패킷은 지연되어 후에 도착할 수 있으므로, 이 재전송은 불필요합니다.
잘못된 재전송은 네트워크 효율을 저하시킵니다. 불필요한 패킷이 링크를 차지하여 대역폭을 낭비하고, 수신 측에서는 중복된 패킷을 처리해야 하는 오버헤드가 발생합니다. 또한, 송신 측의 혼잡 제어 알고리즘에 악영향을 줄 수 있습니다. 예를 들어, TCP의 경우 불필요한 재전송이 발생하면 혼잡 창 크기를 불필요하게 줄이는 동작을 유발하여 전체 처리량을 감소시킬 수 있습니다.
이 문제를 완화하기 위해 여러 기법이 개발되었습니다. 대표적으로 재전송 시간 초과 값을 보수적으로 설정하거나, 중복 ACK 개수 임계값(일반적으로 3)을 상황에 따라 조정하는 방법이 있습니다. 또한, SACK 옵션을 사용하면 수신자가 정확히 어떤 세그먼트를 받았는지 알려줄 수 있어, 재정렬로 인한 오판 가능성을 줄이는 데 도움이 됩니다. 최근 연구에서는 패킷 지연 변화를 모니터링하여 재정렬과 손실을 구분하려는 시도도 이루어지고 있습니다.
빠른 재전송 기법은 패킷 손실을 신속히 감지하고 복구하여 성능을 개선하지만, 네트워크 혼잡 상태와 밀접하게 연관되어 있다. 이 기법의 핵심 트리거인 중복 ACK는 주로 패킷 손실에 의해 발생하지만, 네트워크 경로상의 패킷 재정렬도 원인이 될 수 있다. 따라서 빠른 재전송이 항상 실제 혼잡을 의미하는 것은 아니며, 잘못된 재전송을 유발할 수 있다.
표준 TCP의 혼잡 제어 알고리즘은 빠른 재전송이 발생하면 이를 네트워크 혼잡의 징후로 해석한다. 결과적으로 혼잡 윈도우 크기를 급격히 줄이는 혼잡 회피 단계로 진입한다. 이는 불필요한 재전송이 빈번하게 일어날 경우, 네트워크 실제 대역폭을 충분히 활용하지 못하게 하여 처리량을 저하시키는 원인이 된다.
이러한 문제를 완화하기 위해 TCP NewReno나 TCP CUBIC과 같은 개선된 프로토콜에서는 빠른 재전송 후의 복구 메커니즘을 보강하였다. 예를 들어, 부분적인 ACK를 수신했을 때의 동작을 정교화하여 여러 패킷이 한 번에 손실된 상황에서도 한 번의 빠른 재전송 주기 내에 복구를 완료할 수 있도록 한다. 이를 통해 불필요한 재전송 타임아웃을 줄이고, 혼잡 윈도우를 보다 효율적으로 관리할 수 있다.
결론적으로, 빠른 재전송 기법의 효과는 네트워크 혼잡 상태를 정확히 판단하고 이에 적응하는 혼잡 제어 알고리즘의 성능에 크게 의존한다. 두 메커니즘의 상호작용을 최적화하는 것이 전체 TCP 성능 향상의 핵심 과제 중 하나이다.

빠른 재전송 기법은 주로 TCP에서 구현되며, 관련 표준은 IETF의 RFC 문서들에 정의되어 있다. 핵심 메커니즘인 TCP Fast Retransmit은 RFC 2581에서 처음 표준화되었고, 이후 RFC 5681에서 갱신되었다. 이 표준은 세 개의 중복 ACK를 수신했을 때 패킷 손실을 추정하고 타임아웃을 기다리지 않고 즉시 재전송을 시작하는 절차를 명시한다.
빠른 재전송의 효율성을 극대화하기 위한 Selective Acknowledgment 확장은 RFC 2018에 정의되어 있다. SACK 옵션은 수신자가 연속되지 않은 데이터 블록의 정상 수신을 송신자에게 알릴 수 있게 하여, 손실된 특정 세그먼트만 선택적으로 재전송할 수 있도록 지원한다. 이는 표준 TCP의 누적 ACK 방식의 한계를 보완한다.
다른 주요 관련 표준으로는 RFC 6675가 있다. 이 문서는 SACK을 사용한 정밀한 재전송 복구 알고리즘을 공식적으로 규정하며, RFC 5681의 빠른 재전송 및 복구 알고리즘을 대체한다. 또한, 고속 광역 네트워크를 위한 TCP 확장인 RFC 7323도 큰 윈도우 크기에서 빠른 재전송이 올바르게 동작하도록 필요한 확장을 포함하고 있다.
RFC 번호 | 제목 | 주요 내용 |
|---|---|---|
TCP Congestion Control | 빠른 재전송 및 빠른 복구 알고리즘을 포함한 혼잡 제어 표준 | |
TCP Selective Acknowledgment Options | SACK 옵션의 형식 및 사용법 정의 | |
A Conservative Loss Recovery Algorithm for TCP | SACK을 이용한 정밀한 손실 복구 알고리즘 공식 규정 | |
TCP Extensions for High Performance | 큰 윈도우를 위한 확장, 빠른 재전송 관련 타임스탬프 옵션 등 |
이러한 표준들은 QUIC와 같은 현대 전송 프로토콜에도 영향을 미쳤다. QUIC는 TCP의 혼잡 제어 및 손실 복구 메커니즘을 계승 발전시켜, UDP 상에서 더 낮은 지연으로 빠른 재전송을 구현한다.

빠른 재전송 기법은 TCP와 같은 신뢰성 있는 전송 프로토콜의 성능을 개선하여, 다양한 네트워크 응용 분야에서 핵심적인 역할을 한다. 특히 데이터 손실에 민감하거나 낮은 지연을 요구하는 서비스에서 그 효과가 두드러진다.
실시간 스트리밍 서비스, 예를 들어 VoIP나 화상 회의, 실시간 동영상 스트리밍에서 빠른 재전송은 사용자 경험을 크게 향상시킨다. 이러한 서비스는 엄격한 지연 제약을 가지며, 전통적인 타임아웃 기반 재전송은 버퍼링이나 통화 끊김을 유발할 수 있다. 빠른 재전송 기법을 적용하면 패킷 손실을 빠르게 감지하고 복구하여, 재생 지연을 최소화하고 미디어의 연속성을 유지한다. QUIC 프로토콜은 이러한 실시간 통신 요구사항을 충족하기 위해 빠른 재전송 메커니즘을 적극적으로 활용하는 대표적인 사례이다.
대용량 파일 전송 및 콘텐츠 배포에서도 빠른 재전송은 전체 전송 시간을 단축시킨다. FTP 전송, 소프트웨어 업데이트 배포, 클라우드 백업 서비스와 같이 대역폭을 많이 소모하는 작업에서 단일 패킷 손실이 전체 전송 창의 진행을 멈추게 할 수 있다. 빠른 재전송은 손실된 세그먼트만을 선별적으로 재전송함으로써(예: SACK 사용), 불필요한 대기 시간을 제거하고 네트워크 자원의 활용도를 높인다. 이는 특히 고대역폭-고지연(고대역폭-고지연) 환경에서 처리량 향상에 기여한다.
응용 분야 | 주요 요구사항 | 빠른 재전송의 기여 효과 |
|---|---|---|
실시간 스트리밍 (화상회의, VoIP) | 낮은 지연, 지터 감소, 연속성 | 패킷 손복 복구 지연 최소화, 통화/영상 품질 유지 |
대용량 파일 전송 (FTP, 백업) | 높은 처리량, 전송 시간 단축 | 전송 창 정체 방지, 불필요한 타임아웃 대기 제거 |
웹 브라우징 (HTTP/2, HTTP/3) | 페이지 로드 시간 단축 | 객체 다운로드 중 손실에 따른 지연 감소 |
또한, 현대적인 웹 브라우징을 지원하는 HTTP/2 및 HTTP/3 프로토콜도 내부적으로 빠른 재전송 로직을 사용한다. 여러 웹 객체를 병렬로 전송할 때 하나의 패킷 손실이 전체 연결의 성능을 저하시키는 것을 방지하여, 웹 페이지의 전체 로딩 시간을 줄이는 데 기여한다.
빠른 재전송 기법은 실시간 스트리밍 서비스의 품질을 보장하는 핵심 기술 중 하나이다. 이 서비스는 지터나 버퍼링 없이 데이터를 지속적으로 재생해야 하므로, 패킷 손실에 따른 재전송 지연은 사용자 경험에 직접적인 영향을 미친다. 전통적인 타임아웃 기반 재전송은 손실 감지까지 긴 시간이 소요되어 스트림이 끊기거나 화질이 급격히 저하될 수 있다. 빠른 재전송은 중복 ACK를 통해 손실을 조기에 탐지하고 즉시 해당 패킷만을 재전송함으로써, 재생 버퍼의 고갈을 방지하고 끊김 없는 재생을 유지하는 데 기여한다.
주로 TCP 기반의 적응형 비트레이트 스트리밍에서 중요한 역할을 한다. HTTP 기반 동적 적응 스트리밍과 같은 프로토콜은 네트워크 상태에 따라 전송 비트레이트를 동적으로 조절한다. 빠른 재전송은 패킷 손실을 신속히 복구하여 대역폭 추정 알고리즘에 정확한 피드백을 제공하고, 이에 따라 더 적절한 비트레이트의 미디어 세그먼트로 전환하는 결정을 돕는다. 결과적으로 불필요한 비트레이트 하락을 줄이고 보다 안정적이고 선명한 화질을 유지할 수 있게 한다.
프로토콜/기술 | 빠른 재전송 활용 방식 | 주요 효과 |
|---|---|---|
TCP 전송 계층에서의 손실 복구 | 재생 버퍼링 시간 감소, 비트레이트 변동 안정화 | |
SCTP 또는 QUIC 프로토콜과 결합 | 실시간 화상 통신의 지연 최소화 | |
지연 민감형 스트리밍 | 선택적 확인응답과 함께 사용 | 손실된 미디어 프레임만을 대상으로 한 효율적 복구 |
그러나 극도로 낮은 지연이 요구되는 실시간 인터랙티브 스트리밍[5]에서는 재전송 자체가 부적합할 수 있다. 이러한 경우 빠른 재전송 대신 순방향 오류 수정 기법이 주로 사용된다. 빠른 재전송은 지연에 일정한 여유가 있는 주문형 비디오 스트리밍 또는 라이브 이벤트 스트리밍에서 가장 효과적으로 적용되어 서비스의 신뢰성과 사용자 만족도를 높인다.
빠른 재전송 기법은 대용량 파일 전송 시 전체 처리량을 크게 향상시키고 전송 완료 시간을 단축하는 핵심 메커니즘이다. 기존의 타임아웃 기반 재전송은 세그먼트 손실을 감지하는 데까지 긴 시간이 소요되어, 특히 왕복 지연 시간이 큰 네트워크에서 파일 전송 성능이 급격히 저하되었다. 빠른 재전송은 중복 ACK를 빠르게 감지하여 타임아웃을 기다리지 않고 손실된 세그먼트를 즉시 재전송함으로써 이 문제를 해결한다. 이는 수 기가바이트에 이르는 대용량 파일을 전송할 때 전송 창이 빈번히 정체되는 것을 방지하고, 대역폭을 지속적으로 높은 수준으로 활용할 수 있게 한다.
구체적으로, TCP를 사용한 대용량 파일 전송에서 Selective Acknowledgment 옵션과 결합된 빠른 재전송은 그 효과가 극대화된다. SACK는 수신자가 연속되지 않은 데이터 블록의 정상 수신을 송신자에게 알려줄 수 있어, 여러 개의 패킷이 연속으로 손실된 상황에서도 효율적인 재전송이 가능하다. 이 조합은 단일 손실에 대한 복구를 넘어, 버스트 손실이 발생하는 네트워크 환경에서도 전송 효율을 유지하는 데 기여한다. 결과적으로 파일 서버나 클라우드 스토리지 서비스 간의 백업, 소프트웨어 배포, 미디어 애셋 전송 등에서 전송 시간이 예측 가능하고 안정적으로 단축된다.
전송 시나리오 | 기존 타임아웃 재전송의 문제점 | 빠른 재전송 적용 시 개선 효과 |
|---|---|---|
고지연 위성 통신 링크 | 손실 감지까지 수 초의 지연 발생, 대역폭 지연 곱 활용도 낮음 | 손실 즉시 복구, 높은 처리량 유지 |
해저 광케이블을 통한 국제적 데이터 동기화 | 긴 왕복 지연으로 인한 처리량 급감 | 전송 파이프라인이 유지되어 데이터 동기화 시간 단축 |
데이터센터 내 대용량 가상 머신 이미지 마이그레이션 | 패킷 손실 시 전체 전송 속도가 느려짐 | 지속적이고 빠른 데이터 흐름으로 마이그레이션 시간 감소 |
이 기법은 파일 전송 프로토콜이나 HTTP 기반의 파일 다운로드와 같은 애플리케이션 계층 프로토콜의 성능 기반이 된다. 전송 계층에서 손실을 효율적으로 복구함으로써 애플리케이션은 대용량 데이터를 빠르고 안정적으로 교환할 수 있다. 따라서, 현재 대부분의 현대 운영 체제의 TCP 스택은 빠른 재전송과 SACK를 기본적으로 활성화하여 대용량 파일 전송 성능을 보장한다.

빠른 재전송 기법의 핵심 개념은 확립되었으나, 다양한 네트워크 환경과 애플리케이션 요구사항에 맞춰 지속적으로 연구와 개선이 이루어지고 있다. 최근 연구 동향은 기존 TCP의 한계를 극복하고, QUIC 같은 새로운 전송 프로토콜에의 통합, 그리고 머신 러닝을 활용한 지능형 제어로 집중된다.
한 가지 주요 흐름은 네트워크 상태를 더 정교하게 판단하여 불필요한 재전송을 줄이는 것이다. 예를 들어, 지연 변동이 심한 무선 네트워크나 모바일 네트워크에서는 패킷 지연과 손실을 명확히 구분하기 어렵다. 이를 위해 패킷 도착 시간의 통계적 분석[6], 혹은 명시적인 혼잡 신호(ECN)와 결합한 하이브리드 방안이 제안된다. 또한, BBR 혼잡 제어 알고리즘과 같은 대역폭 지연 곱 기반의 접근법은 손실 자체를 혼잡의 주요 지표로 보지 않으므로, 빠른 재전송의 트리거 정책과의 협력 방안에 대한 연구가 진행 중이다.
다른 중요한 방향은 QUIC 프로토콜에서의 구현과 최적화이다. QUIC는 전송 계층과 암호화가 결합되어 있으며, 사용자 공간에서 구현되므로 빠른 재전송 로직에 대한 실험과 배포가 상대적으로 용이하다. 연구는 QUIC의 연결 마이그레이션, 다중 스트림 환경에서의 선택적 재전송 정책, 그리고 TLS 핸드셰이크 지연을 줄이기 위한 초기 데이터 전송과의 연동에 초점을 맞춘다. 표준화 현황은 다음과 같이 요약할 수 있다.
연구/표준화 분야 | 주요 내용 | 관련 표준/초안 |
|---|---|---|
TCP 개선 | 지연/손실 구분, ECN과의 결합, BBR과의 협력 | IETF RFC 8985, RFC 9000 관련 확장 |
QUIC 최적화 | 다중 스트림 간 공정성, 연결 마이그레이션 시 제어 | IETF QUIC 워킹 그룹 드래프트 |
머신 러닝 적용 | RTT 및 대역폭 예측을 통한 동적 임계값 조정 | 학술 논문 수준의 제안 |
실시간 미디어 | 저지연 모드에서의 공격적 재전송 정책 | WebRTC, SRT 프로토콜 구현 |
또한, 인공 지능 기술을 활용한 연구도 나타나고 있다. 머신 러닝 모델을 사용해 엔드포인트에서 관측한 네트워크 트래픽 패턴을 실시간으로 분석하여, 재전송을 유발하는 중복 ACK 임계값이나 타임아웃 값을 동적으로 조정하는 방안이 탐구된다. 이는 고정된 매개변수(예: 3-중복 ACK)가 모든 네트워크 조건에 최적이 아닐 수 있다는 점에 기인한다. 궁극적으로, 이러한 연구들은 패킷 손실에 대한 반응을 더 빠르고 정확하게 만들어 전송 성능과 효율성을 동시에 높이는 것을 목표로 한다.