// 노션에서 가져왔습니다. 하향식 네트워킹
RTT(왕복 시간) 추정 및 타임아웃 (TCP RTT & Timeout)
📌 타임아웃, 재전송 “메커니즘”
TCP는 손실된 세그먼트를 감지하기 위해 **타임아웃(Timeout)**을 사용. 타임아웃 값 설정은 매우 중요
(3.4절의 rdt 프로토콜)
- ※ 긍정 확인응답과 타이머
- 세번의 중복된 ACK = NAK ⇒ 빠른 재전송(타임아웃 전 재전송)
- 신뢰적인 데이터 전송 프로토콜 rdt 3.0과의 공통점
- 어떤 세그먼트/ 확인응답이 손실/손상/지연되는지 확인 X
- 참고 : 차이는 (TCP는 빠른 재전송을 사용한다.)
- 타임아웃 주기를 어떻게 설정?
- 타임 아웃 ≥ RTT
- 타임아웃이 RTT 보다 작은 경우 불필요한 재전송
- 타임아웃이 RTT 보다 매우 큰 경우 손실이 일어났을 때 즉각적인 재전송 X
- 그렇다면 RTT는 어떻게 예측할까?
- RTT : 세그먼트가 송신된 시간(IP에게 넘겨진 시간) ~ 세그먼트에 대한 긍정응답이 도착한 시간
- 타임 아웃 ≥ RTT

- RTT 추정 공식 (지수 가중 이동 평균, EWMA):
(’이동’함에 따라 ‘가중 평균’이 지수적(1- α)^k으로 감소한다)- 질문
- 매번 계산할까?
- Yes, 재전송이 아닌 ACK가 올 때마다 EWMA로 EstimatedRTT를 새로 갱신
- 타임아웃이 일어나는 경우에도 SampleRTT를 새로 측정해서 갱신하는 것인가?
- X 타임아웃이 일어나는 경우에는 새로 측정하지 않는다.
- 출처 : https://datatracker.ietf.org/doc/html/rfc6298#section-3
- 매번 계산할까?
- 최근 측정값인 SampleRTT에 가중치를 두어 더 부드러운 예측값(EstimatedRTT)을 만듦.
- 참고: SampleRTT 는 타이머가 한가할 때 가장 먼저 측정되는 값.(모든 것을 측정 X)
- 최근에 좀 더 많은 가중치가 부여된다 = 최근 네트워크 혼잡을 더 잘 반영한다.
- = 가중 평균
- 공식:
EstimatedRTT = (1- α)*이전EstimatedRTT + α*SampleRTT (일반적으로 α = 0.125). - 편차(RTT 변화율) 공식:
DevRTT = (1-β)*이전DevRTT + β*|SampleRTT-EstimatedRTT| (일반적으로 β = 0.25).
- 질문
- 타임아웃 간격 (Timeout Interval): 추정된 RTT에 "안전 여유분(safety margin, 편차)"을 더하여 설정
(초기 Timeout Interval은 1초 권고)- 편차가 필요한 이유 : 타임아웃 크기가 너무 크면 재전송 시간이 길어지므로.
- 공식: TimeoutInterval = EstimatedRTT + 4*DevRTT(편차).
- ※ 왜 편차에 4를 곱했는가
- 통계적 안전성 (표준편차 4는 99%이상 상황에서의 범위 포함 2σ: 약 95%)
- <<로 4 곱하는 게 편함
- ※ 왜 편차에 4를 곱했는가
- 재전송인 경우 TimeoutInterval 를 두 배로 하여 조기 타임아웃을 피한다.
- 해당 세그먼트가 수신되고 EstimatedRTT가 수정되면 다시 TimeoutInterval 돌아간다.
- Q: 그래서 이게 어떤 기능에 쓰이는데?
- A: 다 쓰인다. TCP의 신뢰적인 데이터 전송, 흐름 제어, 혼잡 제어(3.7)에서 사용된다.
728x90
'Computer > 네트워크' 카테고리의 다른 글
| [네트워크] 링크 계층 (0) | 2026.07.14 |
|---|---|
| [네트워크] TCP의 혼잡 제어 (0) | 2026.07.13 |
| [네트워크] 혼잡 제어 (0) | 2026.07.13 |
| [네트워크] TCP 흐름 제어 서비스 (1) | 2026.07.13 |
| [네트워크] 신뢰적인 데이터 전송 서비스 (0) | 2026.07.13 |