2024. 1. 26. 14:33ㆍIT 공부/배경지식
netstat
- 전송 제어 프로토콜, 라우팅 테이블, 네트워크 인터페이스 (NIC), 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령줄 도구
- OS X, 리눅스, 솔라리스, BSD를 포함한 유닉스 계열 운영 체제와 윈도우 XP, 윈도우 비스타, 윈도우7, 윈도우 9, 윈도우 10을 포함한 윈도우 NT 기반 운영 체제에서 이용 가능
참고 : https://ko.wikipedia.org/wiki/Netstat
옵션
-r : 라우팅 테이블 확인
-I (대문자) 또는 -i : 이더넷 카드별 정상/에러/드랍 송수신 패킷 수 확인
-g : 멀티캐스트(multicast) 그룹 표시
-s (소문자) : 프로토콜별 네트워크 통계 표시 (IP, ICMP, TCP, UDP)
-n : 포트 번호 표시 (옵션 없을 경우 호스트명, 포트명으로 표시됨)
-p : 프로그램 PID, 프로그램 이름 표시
-l : 연결 가능한 상태(listening)만 표시
-t : TCP
-u : UDP
-c : 1초마다 표시
주로 사용하는 옵션
netstat -nlptu
▶ 현재 TCP, UDP로 열려있는 포트와 프로그램 이름을 표시
TCP 소켓 상태값
CLOSED : 연결이 종료된 상태.
CLOSED_WAIT : 연결 종료를 기다리는 상태
CLOSING : 확인 메세지가 전송 도중 유실된 상태
ESTABLISHED : 서버-클라이언트 간 셔션 연결이 성립되어 통신이 가능한 상태
FIN_WAIT1 : 클라이언트가 FIN 신호를 보내고 연결을 끊는 요청을 한 상태
FIN_WAIT2 : 클라이언트가 FIN 신호에 대한 서버의 ACK 응답을 받고 연결 종료 응답을 기다리는 상태
LAST_ACK : 서버가 FIN 응답을 보내고 클라이언트의 ACK 신호를 기다리는 상태
LISTEN : 서버에 데몬이 실행 중이며 클라이언트의 접속을 기다리는 상태
SYN_RECV : 서버가 클라이언트로부터 접속요청(SYN)을 받고 응답(SYN/ACK)한 뒤, 클라이언트의 확인 메세지 (ACK)는 받지 못한 상태
SYN_SENT : 클라이언트가 서버에게 접속요청(SYN)을 보낸 상태
TIME_WAIT : 클라이언트에서 연결 종료 후 지연되서 도착하는 메세지를 수신하기 위해 잠시 소켓을 열어둔 상태
UNKNOWN : 소켓 상태 알 수 없음
서버의 대기 소켓 상태
CLOSED → LISTEN
서버의 대기 소켓이 LISTEN 상태일 때 신규 생성되는 소켓
클라이언트의 SYN 신호 수신(접속요청) → SYN_RECV → 클라이언트에게 SYN/ACK 신호 응답 → 클라이언트로부터 ACK 신호 수신 → ESTABLISHED → FIN 신호 수신 → ACK 신호 응답 → CLOSE_WAIT → closesocket 함수 호출 → 클라이언트에게 FIN 신호 전송 → LASK_ACK → 클라이언트의 ACK 신호 수신 → CLOSED
클라이언트의 소켓 상태
CLOSED → 서버에 SYN 신호 전송 → SYN_SENT → 서버로부터 SYN/ACK 신호를 받고 ACK 신호 전송 → ESTABLISHED → closesocket 함수 호출 → FIN 신호 전송 → FIN_WAIT1 → 서버의 ACK 신호 수신 → FIN_WAIT2 → 서버의 FIN 신호 수신 → ACK 신호 응답 → TIME_WAIT → 2MSL 이후 CLOSED
※ MSL (Maximum Segment Lifetime) : IP datagram이 네트워크에 존재할 수 있는 시간으로 30초~2분으로 정해진다.
참고 :
https://study-melody.tistory.com/39
https://blog.voidmainvoid.net/201
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=senrjql44&logNo=40052293245
'IT 공부 > 배경지식' 카테고리의 다른 글
[Linux] RHEL8 RSA 변경점 (0) | 2022.09.25 |
---|---|
Wips / 무선침입방지시스템 (0) | 2022.09.09 |