[linux] netstat 상태값 정리

리눅스/유닉스 환경에서 네트워크 관련 프로그램 운용시 상태를 보기 위해 netstat 명령어를 많이 사용한다. 명령어 실행 결과로 표시되는 값과 이때의 status 값이 의미하는 바는 다음과 같다(아래는 시스코 홈페이지(https://www.cisco.com/assets/sol/sb/CVR100W_GUI_EN/help/EN_help/status13.html)의 설명 내용 번역).

 

연결 시작 과정

연결 종료 과정

netstat 상태 값

항목 설명
Proto 소켓에서 사용중인 프로토콜 (TCP, UDP, or raw)
Recv-Q 소켓에 연결된 사용자 프로그램이 복사하지 않은 바이트 수
Send-Q 원격 호스트에서 확인하지 않은 바이트 수
Local Address 로컬 주소(ip) 포트
Foreign Address 원격 주소(ip) 포트
State 소켓 상태. Raw mode나 UDPD에서는 상태값이 없기 때문에 빈값일수 있음
ESTABLISHED - 소켓이 연결된 상태
SYN_SENT - 클라이언트가 서버에게 연결을 요청하는 중 
SYN_RECV - 네트워크로부터 연결 요청을 받는 중 
FIN_WAIT1  - 소켓이 닫혔고 연결이 종료되는 중
- FIN(연결을 끊기 위한 요청)을 보낸 상태
FIN_WAIT2   - 연결이 종료되었고 소켓이 원격지의 종료를 기다리고 있는 중
- 서버가 클라이언트로부터 FIN을 받은후 클라이언트에게 ACK를 준 상태 
TIME_WAIT  - 소켓이 아직 네트워크에 있는 패킷을 처리하기 위해 대기중(연결은 종료된 상태) 
CLOSED  - 연결이 완전 종료됨 
CLOSE_WAIT  - 연결 종료 대기중인 상태 
LAST_ACK  - 원격지의 연결 종료 요청 승인을 기다리는 상태 
LISTEN  - 서버가 클라이언트의 접속 요청에 대기중인 상태 
CLOSING  - 양쪽 소켓이 연결을 종료하였으나 모든 보낸 데이터를 모두 받지 못한 상태 
UNKNOWN - 소켓의 상태를 알수 없음

과도하게 연결이 빈번한 경우 TIME_WAIT의 갯수를 측정하고 그 갯수가 줄어드는지 확인해 봐야 한다. FIN_WAIT1, FIN_WAIT2, CLOSE_WAIT등은 응용 S/W의 버그로 인해 처리가 안되고 남는 경우도 발생할수 있는데 장기적으로 봤을때 이러한 것들이 누적되면 서버 장애로 발생하기 때문에 그전에 조치를 취해야 한다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유