본문 바로가기
책/DB

netstat -an 의 결과 port 상태의 종류에 대한 이해

by 파이어볼러 2015. 3. 3.

netstat 명령

 

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

 

 

 

netstat -na 

 

 - 해당 컴퓨터에 연결된 컴퓨터의 ip와 열려진 port와 protocol 타입을 보여줌

 

 - n : 호스트명, 포트명을 lookup하지 않고 그대로 ip, port번호로 보여준다

 

 - a : 모든 네트웍 상태를 보여준다

 

 - t : TCP 프로토콜만 보여준다

 

 - u : UDP 프로토콜만 보여준다

 

 - p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여준다

 

 - r : 라우팅 테이블 출력

 

 - s : 프로토콜별(ip, icmp, tcp, udp 등)로 통계를 보여준다

 

 - c : 1초 단위로 연속적으로 보여준다

 

 

 

TCP state

 

LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태

 

SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태

 

SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태

 

ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태

 

FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태

 

CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태

 

TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태

 

CLOSED : 완전히 종료

 

 

 

3 way - handshaking

 

 

 

 - client에서 웹서버로 연결을 최초시도시 먼저 SYN 패킷을 보낸다

 

 - SYN 패킷을 보낸 클라이언트는 SYN-SENT 상태가 된다

 

 - server에서 CLOSED는 port가 닫혀잇는 상태를 뜻하고, 포트가 서비스 가능한 상태인 LISTEN 상태로 만들어 주어야 한다

 

 - LISTEN상태에서 클라이언트로부터 SYN 패킷을 받으면 이에 대한 응답으로 SYN+ACK 패킷을 클라이언트로 보낸다

 

 - server로부터 SYN+ACK 패킷을 받으면, 클라이언트는 ESTABLISHED상태로 변하게 되면서 연결을 확인한다

 

 - 클라이언트는 server에 대한 응답으로 ACK 패킷을 보낸다

 

 - server는 이 ACK 패킷을 받고 해당 클라이언트 IP에 대한 포트 ESTABLISHED상태로 전환

 

 - 이로써 server와 클라이언트의 TCP 3 way handshaking 과정을 마치게 된다

 

 

 

0.0.0.0과  ::의 의미

 

 - 모든 local address를 받을 수 있다는 의미, any의 표기 법

 

 - 0.0.0.0은 IPv4에서의 any의 의미

 

 - ::은 IPv6에서의 any의 의미

 

[출처] 임영준SE