본문으로 건너뛰기

netstat 명령어 설명은 어디서 확인할 수 있나요?

💡 요약 정리

  • netstat는 시스템의 네트워크 상태를 확인하는 핵심 명령어입니다.
  • netstat -na 옵션을 사용하면 모든 네트워크 연결 정보를 상세히 표시합니다.
  • TCP 상태, 도메인 소켓 연결 상태 등 다양한 정보를 분석할 수 있습니다.
  • 자주 사용하는 옵션을 조합하면 유용한 통계와 상태 정보를 얻을 수 있습니다.

1. netstat 명령어란?

netstat 명령은 네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어입니다.

"Active Internet connections"(인터넷 연결상태)와 "Active UNIX domain sockets"(도메인 소켓 연결 상태)로 나뉘어 표시됩니다.

netstat -na 옵션을 입력하면 현재 시스템의 모든 네트워크 연결 목록을 표시합니다.

[root@localhost data]# netstat -na

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp        0      0 0.0.0.0:3306            0.0.0.0:*              LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN
tcp        0      0 0.0.0.0:21              0.0.0.0:*              LISTEN
tcp        0    284 10.10.11.11:22          10.10.100.208:6165    ESTABLISHED
udp        0      0 0.0.0.0:68              0.0.0.0:*

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type     State         I-Node   Path
unix  2      [ ACC ]     STREAM   LISTENING     243887   /tmp/ssh-aezye10623/agent.10623
unix  5      [ ]         DGRAM                 4356     /dev/log
unix  2      [ ACC ]     STREAM   LISTENING     288193   /tmp/mysql.sock
unix  2      [ ]         DGRAM                 1267     @/org/kernel/udev/udevd
unix  2      [ ]         DGRAM                 243879
unix  2      [ ]         DGRAM                 4815
unix  2      [ ]         DGRAM                 4364
[root@localhost data]#

2. 주요 옵션

  • -n: 호스트명 및 포트명을 조회하지 않고 IP, Port 번호 그대로 표시합니다.
  • -a: 모든 네트워크 상태를 표시합니다.
  • -t: TCP 프로토콜만 표시합니다.
  • -u: UDP 프로토콜만 표시합니다.
  • -p: 해당 포트를 사용하는 프로그램 및 프로세스 ID(PID)를 표시합니다.
  • -r: 라우팅 테이블을 출력합니다.
  • -s: 프로토콜별(IP, ICMP, TCP, UDP 등) 통계를 표시합니다.
  • -c: 1초 단위로 정보를 연속 출력합니다.

3. Active Internet connections 항목

  • 프로토콜, 수신 큐(Recv-Q), 송신 큐(Send-Q), IP 및 포트 정보를 제공합니다.
  • TCP 프로토콜은 상태(State) 정보를 추가로 표시합니다.

4. Active Internet connections 항목의 TCP 상태(State)

  • LISTEN: 서버 데몬이 접속 요청을 기다리는 상태
  • SYS-SENT: 클라이언트가 원격 호스트에 연결 요청한 상태
  • SYN_RECEIVED: 서버가 클라이언트 요청을 받아 응답했으나 확인 메시지를 받지 않은 상태
  • ESTABLISHED: 3 Way Handshaking 완료 후 양방향 연결된 상태
  • FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2: 연결 종료 요청 및 절차가 진행 중인 상태
  • CLOSING: 드물며 확인 메시지가 손실된 상태
  • TIME-WAIT: 연결 종료 후 패킷 지연 가능성 대비 소켓을 유지 중인 상태
  • CLOSED: 연결이 완전히 종료된 상태

5. Active UNIX domain sockets 항목

  • 프로토콜은 unix로 표시되며, RefCnt는 해당 소켓을 참조한 프로세스 횟수입니다.
  • Flags: 소켓 상태, 일반적으로 [ ACC ]는 연결되지 않은 상태이며, 연결된 경우 공백으로 표시됩니다.
  • Type: DGRAM(Datagram) 또는 STREAM으로 표시됩니다.
  • State, I-node 번호, 소켓 파일의 절대 경로가 함께 표시됩니다.

6. UNIX 도메인 소켓 연결 상태(State)

  • FREE: 소켓이 할당되지 않은 상태
  • LISTENING: 연결 요청을 대기 중
  • CONNECTING: 소켓 연결이 개시됨
  • CONNECTED: 소켓이 연결된 상태
  • DISCONNECTING: 소켓 연결 종료 중
  • (공백): 어떠한 프로세스와도 연결되어 있지 않음
  • UNKNOWN: 이 상태는 출력되지 않음

7. 유용한 netstat 사용 예

  • netstat -na --ip: tcp/udp 세션 목록을 표시합니다.
  • netstat -na | grep ESTABLISHED | wc -l: 활성 세션 수를 확인합니다.
  • netstat -nap | grep :80 | grep ESTABLISHED | wc -l: 80번 포트의 동시 접속자 수 확인
  • netstat -nltp: LISTEN 중인 포트 목록 표시
  • netstat -r: 라우팅 테이블을 출력합니다