Connection checklist

TCP 연결 문제는 수립, 사용, 종료 신호를 나눠 본다

상태 이름만 보면 원인을 놓치기 쉽습니다. 어느 구간에서 멈췄는지와 그때 확인할 신호를 함께 묶어야 합니다.

구간
정상 신호
나쁜 신호
우선 점검
수립
SYN → SYN-ACK → ACK가 짧은 시간 안에 끝남
SYN-SENT 또는 SYN-RECEIVED 누적
listen 포트, 방화벽, 라우팅, SYN backlog
사용
ESTABLISHED에서 RTT와 재전송이 안정적
처리 지연, retransmit, zero window 증가
rwnd/cwnd, 애플리케이션 읽기 속도, 경로 손실
정상 종료
FIN과 ACK가 양방향 송신 스트림을 차례로 닫음
CLOSE-WAIT, FIN-WAIT-2가 계속 남음
소켓 close 호출, half-close 정책, timeout
비정상 종료
RST가 명확한 거부나 abort 상황에서만 보임
RST 폭증, 중간 장비 drop, 반복 재연결
방화벽/프록시 정책, SO_LINGER, 앱 예외 로그
운영 압박
TIME-WAIT가 서비스 특성 안에서 관리됨
포트 고갈, conntrack 포화, LB 상태 테이블 압박
keep-alive, 커넥션 풀, 포트 범위, 재시도 폭주
상태는 결과상태명보다 직전 패킷과 다음 대기 이벤트를 본다.
종료는 양방향FIN 하나는 한쪽 송신 스트림만 닫았다는 뜻이다.
RST는 abort정상 데이터 전달 완료의 신호로 쓰면 안 된다.