본문 바로가기

리눅스

netstat 명령어

728x90

netstat 명령어

netstat 명령어는 네트워크 통계 정보를 확인하거나 현재의 네트워크 연결 상태를 조회하기 위해 사용되는 명령어입니다. 이를 통해 로컬 시스템에서 수신 중인 및 송신 중인 네트워크 연결, 라우팅 테이블, 인터페이스 상태 등의 정보를 확인할 수 있습니다.

netstat 상태(State)

state description
ESTABLISHED 소켓에 연결이 설정되어 있습니다.
SYN_SENT 소켓이 연결을 적극적으로 설정하려고 시도하고 있습니다.
SYN_RECV 네트워크에서 연결 요청이 수신되었습니다.
FIN_WAIT1 소켓이 닫히고 연결이 종료됩니다.
FIN_WAIT2 연결이 닫히고 소켓이 원격 끝에서 종료되기를 기다리고 있습니다.
TIME_WAIT 소켓은 네트워크에 남아 있는 패킷을 처리하기 위해 닫은 후 대기 중입니다.
CLOSE 소켓이 사용 중이 아닙니다.
CLOSE_WAIT 원격 끝이 종료되어 소켓이 닫히기를 기다리고 있습니다.
LAST_ACK 원격 끝이 종료되고 소켓이 닫혔습니다. 승인을 기다리는 중입니다.
LISTEN 소켓이 들어오는 연결을 수신 대기 중입니다. 이러한 소켓은 --listening(-l) 또는 --all(-a) 옵션을 지정하지 않는 한 출력에 포함되지 않습니다.
CLOSING 두 소켓이 모두 종료되었지만 여전히 모든 데이터가 전송되지 않았습니다.
UNKNOWN 소켓의 상태를 알 수 없습니다.

출처-https://www.ictshore.com/wp-content/uploads/2016/12/1017-01-TCP_States_diagram.png

TCP endpoints state transmission

출처-https://totozhang.github.io/2016-01-23-tcp-connection-status-transit/TCPState2.png

728x90

tcp flags

state description
SYN (synchronize) 연결을 시작하는 데 사용되는 패킷입니다.
ACK (acknowledgment) 데이터 패킷이 수신되었는지 확인하는 데 사용되는 패킷으로, 시작 요청 및 요청을 삭제하는 데에도 사용됩니다.
RST (reset) 연결이 중단되었거나 서비스가 요청을 수락하지 않고 있음을 나타냅니다.
FIN (finish) 연결이 끊어지고 있음을 나타냅니다. 발신자와 수신자 모두 FIN 패킷을 전송하여 연결을 정상적으로 종료합니다.
PSH (push) 들어오는 데이터를 버퍼링하지 않고 애플리케이션에 직접 전달해야 함을 나타냅니다.
URG (urgent) 패킷이 전송하는 데이터가 TCP 스택에서 즉시 처리되어야 함을 나타냅니다.

출처-https://www.ictshore.com/wp-content/uploads/2016/12/1017-02-TCP_States_in_a_connection.png

performance diagram

출처-https://i.stack.imgur.com/ntC1q.png

netstat 명령어의 기본 구문

netstat [옵션]

자주 사용되는 옵션

  • -a 또는 --all: 모든 연결 및 소켓을 보여줍니다.
  • -t 또는 --tcp: TCP 연결 정보만 표시합니다.
  • -u 또는 --udp: UDP 연결 정보만 표시합니다.
  • -n 또는 --numeric: IP 주소 및 포트 번호를 숫자로 표시하며, 호스트명으로 변환하지 않습니다.
  • -p 또는 --program: 프로세스 이름과 함께 소켓 및 연결 정보를 표시합니다. (권한이 필요할 수 있음)
  • -r 또는 --route: 라우팅 테이블을 표시합니다.
  • 모든 연결 및 소켓 정보를 숫자로 표시하고 프로세스 정보와 함께 표시
netstat -anp

 

참고URL

- Transmission Control Protocol (TCP): The advanced stuff

- TCP state transmissions

 

728x90