팀장님(짱천재)께서 자주 사용하게 될 명령어니까 제발 외우라고 했던 [ netstat -an ] !!
유닉스 명령어와 친해지기... 쉽지 않다..!
맥북 IP 확인 방법
ifconfig | grep inet
윈도우 IP 확인 방법
ipconfig all
netstat
netstat [옵션] [| grep 포트 번호 or 서비스 명]
- 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구
- 네트워크 관련한 정보를 보는 유틸리티로 현재 리슨중인 포트, 모든 내외부/연결 정보 등을 확인할 수 있다.
- 해당 명령을 수행하는 서버가 다른 시스템과 어떤 서비스, 또는 어떤 포트로 연결되어 있는지를 확인할 수 있다.
option
옵션 | 설명 |
-a | 모든 소켓을 표시한다. |
-t | TCP 로 연결된 socket 만 표시한다. |
-u | UDP 로 연결된 socket 만 표시한다. |
-n | 포트번호를 표시한다. |
-p | 소켓을 사용하고 있는 프로그램 이름(PID)을 표시한다. |
-r | 라우팅 테이블을 표시한다. |
-l | 연결 대기 상태(listen)인 소켓만 표시한다. |
> 더 많은 옵션은 man 명령어를 통해 확인할 수 있다.
$ sudo netstat -a
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp6 0 0 [::]:hostmon [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 0.0.0.0:hostmon 0.0.0.0:*
udp 0 0 localhost:323 0.0.0.0:*
udp 0 0 ip-127-0-0-53.ap:domain 0.0.0.0:*
udp 0 0 ip-172-31-23-247:bootpc 0.0.0.0:*
udp6 0 0 [::]:hostmon [::]:*
udp6 0 0 localhost:323 [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 19709 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 21522 /var/lib/sss/pipes/nss
- Proto : TCP / UDP / RAW 등 프로토콜의 종류
- Recv-Q : 해당 process가 현재 받는 바이트
- Send-Q : 해당 process가 현재 보내는 바이트
- Local Address : 출발지 주소 및 포트(자신의 주소 및 포트)
- Foreign Address : 목적지 주소 및 포트
- State : 포트의 상태
예시
netstat -an
-> 열려있는 모든 포트를 확인한다.
netstat -an | grep LISTEN
-> 상태가 LISTEN인 모든 포트를 확인한다.
- netstat -a
- netstat -an
상태값
상태
|
설명 |
LISTEN | 서버의 데몬이 떠 있어서 클라이언트의 접속 요청을 기다리고 있는 상태 |
SYN_SENT | 클라이언트가 서버에게 연결을 요청한 상태 |
SYN_RECEIVED | 서버가 클라이언트로부터 접속 요구(SYN)을 받아 클라이언트에게 응답(SYN/ACK)하였지만, 아직 클라이언트에게 확인 메시지(ACK)는 받지 못한 상태 |
ESTABLISHED | 서버와 클라이언트 간에 세션 연결이 성립되어 통신이 이루어지고 있는 상태 (클라이언트가 서버의 SYN을 받아서 세션이 연결된 상태) |
FIN_WAIT1 | 클라이언트가 서버에게 연결을 끊고자 요청하는 상태 (FIN을 보낸 상태) |
CLOSE_WAIT | TCP 연결이 상위 응용프로그램 레벨로부터 연결 종료를 기다리는 상태 |
FIN_WAIT2
|
서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태
(서버가 클라이언트로부터 최초로 FIN을 받은 후, 클라이언트에게 ACK를 주었을 때) |
LAST_ACK
|
호스트가 원격지 호스트의 연결 종료 요구 승인을 기다리는 상태
(서버가 클라이언트에게 FIN을 보냈을 때의 상태) |
TIME_WAIT | 연결은 종결되었지만 당분간 소켓을 열어 놓은 상태. 약 1분 정도이며 시간이 지나면 사라진다. |
CLOSED
|
완전히 연결이 종료된 상태
|
CLOSING
|
흔하지 않으나 주로 확인 메시지가 전송 도중 유실된 상태
|
UNKNOWN
|
소켓의 상태를 알 수 없는 상태.
|
Port와 Socket
PORT
- 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값.
이때 호스트란? IP를 가지고 있고 양방향 통신이 가능한 컴퓨터 ... - 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값이다. 즉 같은 호스트 내에서 서로 다른 프로세스가 같은 포트넘버를 가질 수 없다.
- 포트는 쉽게 말하면 '사용 용도를 숫자로 표현한 것'이라고 할 수 있다!
Socket
- 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창구 같은 것.
- 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어 소켓에 데이터를 써 보내거나 소켓으로부터 데이터를 읽어 들여야 한다.
- 소켓을 열기 위해선 호스트에 할당된 IP주소, 포트넘버, 프로토콜 등이 필요하며 이 세 가지가 소켓을 정의한다.
https://blog.naver.com/ncloud24/221388026417
https://blog.voidmainvoid.net/201
https://www.lesstif.com/lpt/linux-netstat-93127510.html
https://ktdsoss.tistory.com/282
https://blog.naver.com/ding-dong/221389847130
https://livenow14.tistory.com/57
https://www.ictshore.com/free-ccna-course/transmission-control-protocol-advanced/
...
TCP/UDP 차이점 정리 참고 블로그!
https://velog.io/@kimyeji203/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCPUDP
'OS > Unix' 카테고리의 다른 글
[UNIX] crontab 스캐줄러 (0) | 2023.04.18 |
---|---|
[UNIX] 디스크 용량 확인 - df, du (0) | 2023.02.11 |
[UNIX] grep, find (1) | 2022.12.11 |