연결은 되는데 응답이 가끔 툭툭 끊기거나 느려질 때, 흔한 범인 중 하나가 TCP 재전송입니다. 패킷이 중간에 버려지면 TCP는 응답(ACK)을 못 받고 같은 데이터를 다시 보냅니다. 이 재전송이 잦을수록 체감 지연이 커집니다. "느리다"로 끝내지 말고 재전송 수치를 직접 읽어봅니다.
진단 — 연결별 재전송 보기
ss -ti는 활성 TCP 연결의 내부 통계를 보여줍니다. retrans 항목이 핵심입니다.
로컬 터미널
ss -ti
OUTPUT
ESTAB 0 0 10.0.1.5:443 10.0.2.9:51234
cubic rtt:42.3/8.1 retrans:0/137 rto:260
retrans:0/137은 "현재 미해결 0 / 누적 재전송 137"을 뜻합니다. 누적값이 전송량 대비 크게 늘어나면 손실이 있다는 신호입니다. rtt(왕복 시간)와 rto(재전송 타임아웃)도 함께 봅니다. rtt가 출렁이면 경로가 불안정한 것입니다.
진단 — 시스템 전체 손실 통계
개별 연결이 아니라 호스트 전체의 누적 통계는 netstat -s로 봅니다.
로컬 터미널
netstat -s | grep -i retrans
OUTPUT
1432 segments retransmitted
87 fast retransmits
19 timeouts in loss state
segments retransmitted가 전체 전송 대비 1퍼센트를 넘으면 의미 있는 손실로 봅니다. timeouts가 많다는 건 ACK 자체가 안 와서 타임아웃까지 기다렸다는 뜻으로, 단순 혼잡보다 경로 단절에 가깝습니다.
해석 — 재전송 종류로 원인 좁히기
| 신호 | 의미 | 1순위 점검 |
|---|---|---|
| fast retransmit 증가 | 중복 ACK 기반 빠른 복구 | 경로 혼잡·간헐 손실 |
| timeout 재전송 증가 | ACK 자체가 안 옴 | 방화벽 드롭·경로 단절 |
| 특정 연결만 retrans 높음 | 그 목적지 경로 문제 | 해당 구간 라우팅·MTU |
| 전 연결 고르게 높음 | 로컬 NIC·드라이버 | 인터페이스 에러 카운터 |
인터페이스 자체 오류도 함께 확인합니다.
로컬 터미널
ip -s link show eth0 # RX/TX errors, dropped 카운터
errors나 dropped가 계속 증가하면 NIC·케이블·드라이버 쪽을 의심합니다.
순서 요약
로컬 터미널
ss -ti # 연결별 retrans / rtt / rto
netstat -s | grep -i retrans # 호스트 전체 재전송 통계
ip -s link show eth0 # 인터페이스 에러·드롭
재전송이 특정 목적지에만 몰리면 그 경로의 문제, 전 연결에 고르게 나타나면 로컬 쪽 문제일 가능성이 큽니다. 이 구분만으로 점검 범위가 크게 줄어듭니다.
TCP 동작과 패킷 손실을 직접 관찰하며 진단하는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.