서버를 운영하다보면 네트워크 상태를 확인해야할 일이 생긴다.. 운영이 아니더라도 개발자라면 할일이 생기는..
netstat란?
전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스, 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 줄 도구이다. (위키백과 : https://ko.wikipedia.org/wiki/Netstat)
- 사용방법
netstat [옵션] [ | grep 포트번호 or 서비스 명]
- 옵션
-l (listen) : 연결 가능한 상태
-n (number port) : 포트 넘버
-t (tcp) : tcp
-u (udp) : udp
-p : 프로그램 이름 / PID
-a : 모두
-i : 이더넷 카드별 정상/에러/드랍 송수신 패킷 수 확인
-r : 라우팅 테이블
-s : 네트워크 통계
netstat --help를 치면 위에서 설명한 옵션의 자세한 정보를 볼 수 있다.
- 예제
- netstat -an | grep 포트번호 : 특정 포트의 사용 상태 확인
-netstat -lnt : tcp LISTEN 포트가 모두 출력
- netstat -lntp : LISTEN 포트 + PID/프로그램명 모두 출력
- netstat -nap : 연결을 기다리는 목록 출력
- netstat 상태값
상태 | 설명 |
CLOSED | 연결이 완전히 종료된 상태 |
CLOSING | 흔하지 않으나 주로 확인 메시지가 전송 도중 유실된 상태 |
CLOSE_WAIT | TCP 연결이 상위 응용프로그램 레벨로부터 연결 종료를 기다리는 상태 |
ESTABLISHED | 서버와 클라이언트 간에 세션 연결이 성립되어 통신이 이루어지고 있는 상태 (클라이언트가 서버의 SYN을 받아 세션이 연결된 상태) |
FIN_WAIT1 | 클라이언트가 서버에게 연결을 끊고자 요청하는 상태 (FIN을 보낸 상태) |
FIN_WAIT2 | 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태 (서버가 클라이언트로부터 최초로 FIN을 받은 후 클라이언트에게 ACK를 주었을 때) |
LAST_ACK | 호스트가 원격지 호스트의 연결 종료 요구 승인을 기다리는 상태 (서버가 클라이언트에게 FIN을 보냈을 때의 상태) |
LISTEN | 서버가 클라이언트의 접속 요청을 기다리고 있는 상태 |
SYN_SENT | 클라이언트가 서버에게 연결을 요청한 상태 |
SYN_RECEIVED | 서버가 클라이언트로부터 접속 요구(SYN)을 받아 클라이언트에게 응답(SYN/ACK)하였지만 아직 클라이언트에게 확인 메시지(ACK)는 받지 못한 상태 |
TIME_WAIT | 연결은 종결되었지만 소켓을 열어놓은 상태. 약 1분정도이며 시간이 지나면 사라짐 |
UNKNOWN | 소켓의 상태를 알 수 없음 |
- TCP 상태전이 다이어그램
client가 close()를 실행한 이후부터 설명해 보자면 (서버가 먼저 close를 수행할 수 있음)
1. client가 FIN를 보내고 FIN_WAIT1상태로 대기한다.
2. 서버는 CLOSE_WAIT 상태를 바꾸고 응답 ACK를 전달하고, 해당 포트에 연결되어 있는 어플리케이션에서 CLOSE()를 요청한다
3. ACK를 받은 클라이언트는 상태를 FIN_WAIT2로 변경한다.
4. CLOSE() 요청을 받은 서버는 종료 프로세스를 진행하고 FIN을 클라이언트에게 보내 LAST_ACK상태로 바꾼다
5.FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고 TIME_WAIT으로 상태를 바꾼다. TIME_WAIT에서 일정시간이 지나면 CLOSED된다. ACK를 받은 서버도 포트르 CLOSED로 닫는다.
'개발 > Linux' 카테고리의 다른 글
[Linux] 패스워드 없이 서버 간 파일 전송하기 : ssh-keygen (1) | 2022.05.18 |
---|---|
[Linux] OOM Killer란? Kill 대상에서 제외시키기 (0) | 2022.01.18 |
[Linux] 방화벽 설정하기 / 특정 포트 방화벽 오픈 (1) | 2021.12.22 |
[Linux] MySQL DB 백업 스크립트 - 자동으로 백업하기 (0) | 2021.12.17 |
[Linux] 리눅스에서 Unix ODBC 사용하기 (0) | 2021.12.16 |
댓글