웹서버를 생성하고 웹 서비스를 하려고 할 경우 현재 시스템의 네트워크 포트 상태를 확인할 필요가 있습니다.
netstat(network statistics) 명령어는 현재 사용하고 있는 TCP 포트를 조회하는 명령어로 TCP 통신을 진행중인 서비스의 연결 상태를 확인할 수 있습니다. 이 명령어는 주로 네트워크의 문제를 찾아내고 성능 측정을 통해 네트워크 트래픽을 결정하기 위해 사용합니다.
Options:
Option | Description |
a | 모든 소켓을 출력합니다. |
-l | listen 상태인 소켓만 출력합니다. |
-n | 서비스 이름 확인은 생략하고 호스트 이름과 포트를 숫자 형식으로 표시합니다. |
-p | 포트에서 수신하는 PID 와 프로세스 명을 출력합니다. |
-t | TCP 소켓만 출력합니다. |
-u | UDP 소켓만 출력합니다. |
사용 예:
$ netstat -nlt | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
$ sudo netstat -ltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost.localdoma:ipp 0.0.0.0:* LISTEN 129968/cupsd
tcp 0 0 localhost.lo:postgresql 0.0.0.0:* LISTEN 1362/postgres
tcp 0 0 localhost.localdom:5433 0.0.0.0:* LISTEN 1361/postgres
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 1607/mosquitto
tcp 0 0 localhost.localdo:34665 0.0.0.0:* LISTEN 54076/code
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN 919/systemd-resolve
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN 129968/cupsd
tcp6 0 0 [::]:1883 [::]:* LISTEN 1607/mosquitto
tcp6 0 0 [::]:ms-wbt-server [::]:* LISTEN 1324/xrdp
tcp6 0 0 [::]:33060 [::]:* LISTEN 103371/mysqld
tcp6 0 0 [::]:mysql [::]:* LISTEN 103371/mysqld
tcp6 0 0 [::]:http [::]:* LISTEN 1363/apache2
tcp6 0 0 ip6-localhost:3350 [::]:* LISTEN 1261/xrdp-sesman
udp 0 0 0.0.0.0:42745 0.0.0.0:* 1052/avahi-daemon:
udp 0 0 localhost:domain 0.0.0.0:* 919/systemd-resolve
udp 0 0 0.0.0.0:631 0.0.0.0:* 129970/cups-browsed
udp 0 0 224.0.0.251:mdns 0.0.0.0:* 5859/chrome
udp 0 0 0.0.0.0:mdns 0.0.0.0:* 1052/avahi-daemon:
udp6 0 0 [::]:36940 [::]:* 1052/avahi-daemon:
udp6 0 0 [::]:mdns [::]:* 1052/avahi-daemon:
두번째 사용 예에서 출력 정보는 다음과 같습니다.
Proto | 프로토콜의 종류, TCP 혹은 UDP |
Local Address | 자기 자신의 IP 주소와 포트 번호 0.0.0.0은 특정 IP와 연결되어 있지 않다는 뜻입니다. |
Foreign Address | 상대방 측의 IP 주소와 포트 번호 0.0.0.0은 아직 통신이 시작되지 않았다는 뜻입니다. |
State | 현재 서비스의 연결 상태입니다. |
PID/Program name | 현재 포트를 사용하고 프로세스 정보입니다. |
출력 정보 중에서 State 는 다음과 같은 의미를 가집니다.
State | Description |
ESTABLISHED | 연결 성립 상태 |
SYN_SENT | 서버에서 클라이언트로 연결 요청을 시도한 후 기다리는 상태 |
SYN_RECV | 클라이언트에서 연결 요청을 받은 상태 |
FIN_WAIT1 | 소켓이 닫히고, 연결은 차단되고 있는 상태 |
FIN_WAIT2 | 연결이 끊기고 소켓은 클라이언트에서 차단되는 걸 기다리는 상태 |
TIME_WAIT | 네트워크가 패킷을 처리하기 위해 소켓이 닫힌 후에도 대기중인 상태 |
CLOSE | 소켓이 사용되지 않은 상태 |
CLOSE_WAIT | 클라이언트에서 종료되고 소켓이 닫힐 때까지 대기하는 상태 |
LAST_ACK | 클라이언트가 종료되고 소켓도 닫힌 후 확인을 기다리는 상태 |
LISTEN | 소켓에 들어오는 연결 요청을 대기 중인 상태 |
CLOSING | 클라이언트에서 연결 종료 요청 확인을 기다리는 상태 |
UNKNOWN | 상태 확인 불가 |
'Linux > Linux Shell Command' 카테고리의 다른 글
chown - 파일 및 디렉터리 소유자 변경 (0) | 2023.02.01 |
---|---|
nmap - 네트워크 포트 스캐너 (0) | 2023.01.20 |
공인 IP 확인하기 (0) | 2023.01.17 |
ifconfig - 네트워크 인터페이스 정보 (1) | 2022.09.28 |
wget - 인터넷에서 파일 다운로드 (0) | 2022.08.21 |