[root@hoon hoon]# 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:3300 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 211.236.xx.xx:80 200.40.xx.xx:1291 SYN_RECV
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 211.236.xx.xx:80 219.251.xx.xx:2156 TIME_WAIT
tcp 0 0 211.236.xx.xx:22 211.236.xxx.xx:37859 ESTABLISHED
tcp 0 0 211.236.xx.xx:80 222.122.xxx.xx:46241 ESTABLISHED
tcp 0 0 211.236.xx.xx:80 222.122.1xx2xx:2709 ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 193443844 /tmp/mysql.sock
unix 7 [ ] DGRAM 998 /dev/log
unix 2 [ ] STREAM CONNECTED 193494930
unix 2 [ ] STREAM CONNECTED 193494879
unix 3 [ ] STREAM CONNECTED 193482882
unix 3 [ ] STREAM CONNECTED 193482881
unix 2 [ ] DGRAM 192172871
unix 2 [ ] DGRAM 1280
unix
2 [ ] DGRAM 1223
unix 2 [ ] DGRAM 1205
unix 2 [ ] DGRAM 1013
뭐 정상적으로 한가하게(?)작동하는 서버에서 netstat 상태를 보면 대충 저런 시츄에이션이 연출된다.
이런 정보에서 State 상태를 유심히 관찰할 필요성이 있는데....이건 TCP의 3 Way handshake 라는 방식으로 TCP연결이 맺어지는 것과 관련이 있다.
일단 해당 State 필드를 해석해 보자면 ...
----------------------------------------------------------------------------------------
LISTEN : 서버에 데몬이 떠서 접속 요청을 대기 또는 기다리는 상태.
SYN_SENT :로컬의 클라이언트 응용프로그램이 원격 또는 로컬 호스트에 SYN패킷을 보내어 연결을 요청한 상태.
SYN_RECEIVED : 서버가 클라이언트로부터 접속요구(SYN)를 받은 클라이언트에게 SYN/ACK으로 응답하였지만 확인 메세지를 받지 않은 상태.
ESTABLISHED : 3 way handshake 가 완료된 후 서로 연결이 되어 실제 데이터 교환이 이루어지고 있는 상태.
FIN_WATE1, CLOSE_WATE, FIN_WAIT2: 서버에서 연결을 종료하기 위해 클라이언트에게 또는 클라이언트가 서버에 종결을 요청하고 회신을 받아 종료하는 과정의 상태.
CLOSING : 흔하지는 않지만 주로 확인 메세지가 전송도중 분실된 상태.
TIME_WAIT : 연결을 종료되었지만 주로 확인 메세지가 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태.
CLOSED : 완전히 종료.
시스템 netstat 명령어
문법 : #netstat [옵션]
옵션 :
-r : routing table을 출력한다.
-i : 모든 네트워크 인터페이스 정보를 출력한다.
-n : 주소를 숫자로 출력한다.
-p : PID와 프로그램 이름을 출력한다.
-l : listening 상태인 소캣 정보만 출력한다.
-a : listening & non listening 소켓 모두 출력한다.
-u : udp 프로토콜을 사용하는 소켓만 출력한다.
-t : tcp 프로토콜을 사용하는 소켓만 출력한다.
ex)
#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)
#netstat -a (연결된, 혹은 연결을 기다리고 있는 모든 포트를 출력)
#netstat -an (연결된, 혹은 연결을 기다리고 있는 목록을 IP주소로 바꿔서 보여줌)
포트스캔 명령어로 확인하는 방법
# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*
lsof 명령어로 확인하는 방법
# 모든 네트워크 소켓 확인
lsof -I
'컴퓨터 > 네트워크,인터넷' 카테고리의 다른 글
OSI 7 Layer (Open System Interconnection) (0) | 2009.09.11 |
---|---|
[구글] 애드센스의 새로운 지급방식 :: 웨스턴 유니언(Western Union Quick Cash) (0) | 2009.09.08 |
netsh 명령어로 네트워크를 설정 (1) | 2009.06.08 |
netsh 사용법 (2) | 2009.06.08 |
MySQL 에서 사용되는 sql문 정리 (0) | 2009.06.08 |