← 아티클 목록

TCP 재전송·패킷 손실 진단 — ss와 netstat로 추적

2027-12-06#networking#트러블슈팅#tcp

연결은 되는데 응답이 가끔 툭툭 끊기거나 느려질 때, 흔한 범인 중 하나가 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 카운터

errorsdropped가 계속 증가하면 NIC·케이블·드라이버 쪽을 의심합니다.

순서 요약

로컬 터미널
ss -ti                        # 연결별 retrans / rtt / rto
netstat -s | grep -i retrans  # 호스트 전체 재전송 통계
ip -s link show eth0          # 인터페이스 에러·드롭

재전송이 특정 목적지에만 몰리면 그 경로의 문제, 전 연결에 고르게 나타나면 로컬 쪽 문제일 가능성이 큽니다. 이 구분만으로 점검 범위가 크게 줄어듭니다.


TCP 동작과 패킷 손실을 직접 관찰하며 진단하는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.