netstat -an 했을때 나타나는 상태코드는 다음과 같다.
* LISTEN
서버상의 어플리케이션이 동작하여 수동적인 모드(Passive Open)로 포트를 개방 하여 해당 포트로의 서비스 요청을 기다리고 있는 상태를 의미합니다.
* SYN-SENT
로컬 시스템의 클라이언트 어플리케이션이 원격 호스트에 접속을 시도하기 위해서 능동적인 개설을 요청하는 경우 입니다. 실제로는 Packet 상에 Synchronize flag 를 설정한 시작 세그먼트를 전송 하게 되며, 원격 시스템도 역시 Synchronize flag 를 설정한 시작 세그먼트로 응답할 것을 기다리는 상태 입니다.
* SYN-RECEIVED
서버의 애플리케이션이 원격 클라이언트로부터 접속을 요청하는 Synchronize flag가 설정된 패킷을 수신하였고 자신의 시작 패킷으로 응답 하였으며, 그 패킷에 대한 확인 메세지를 기다리고 있는 상태 입니다.
* ESTABLISHED
3단계 핸드셰이킹(3-Way Handshaking)과정이 완료되어 원격지 클라이언트와 해당 서버간의 TCP 연결이 확립된 것을 의미합니다. 이 후 부터 실제적인 데이터의 전송이 이루어 지게 됩니다.
* FIN-WAIT-1
클라이언트에서 접속을 해제 하기 위해서 클라이언트는 확립된 세션에 능동적인 접속해제를 요청합니다. 이 경우 클라이언트는 Finish flag 가 설정된 패킷을 전송하게 되지만 TCP는 아직도 원격 시스템이 접속해제 패킷에대한 확인 메세지와 동일한 접속해제 패킷으로 응답하기를 기다리는 상태 입니다. 해당 세션이 완전히 종료 될 때 까지 원격 시스템으로부터 데이터는 수신하지만, 추가적인 데이터를 전송하지는 않는 상태 입니다.
* COLSE-WAIT
클라이언트에 의해 전송된 접속해제 요청이 수신되었고 서버측에서 클라이언트 해당 세션에 대한 TCP 메세지를 클라이 언트에게 전송한 상태 입니다. 그러나 클라이언트는 애플리케이션에서 작업을 종료하지않아 해당 세션을 유지하고 있는 상태 입니다.
* FIN-WAIT-2
클라이언트는 원격지 서버시스템으로 Finish flag 가 설정된 패킷을 전송 하였으며, 원격 서버 시스템으로 부터 그 패킷에 대한 확인 패킷을 수신한 상태 입니다. 그러나 원격 서버의 애플리케이션이 아직 작업을 종료 하지 않아 원격 TCP가 자신의 해당 세션을 유지하고 있는 상태 입니다.
* LAST-ACK
Finish flag가 설정된 종료 패킷을 수신하였으며 클라이언트의 애플리케이션은 세션 종료에 합의하여 자신도 종료를 요청한 상태입니다. 그 결과 로컬 TCP 는 Finish flag 가 설정된 자신의 종결 세그먼트를 전송 하였으며, 이 세그먼트에 대 한 확인 메세지가 수신되면 종결됨.
* CLOSING
이 상태는 흔하게 발생하지는 않습니다. 일반적으로 패킷이 네트워크상에서 분실되었다는것을 의미합니다. 이런 경우 클라이언트 TCP는 Finish flag 가 설정된 접속해제 패킷을 송신하고 원격 서버 시스템의 접속해제 패킷도 수신하였지만, FIN-WAIT-1 단계에서 전송한 세그먼트에 대한 확인 메세지가 수신되지 않은 상태임을 의미합니다. 보통 확인 메세지가 전송 도중 분실되었다는 것을 의미합니다.
* TIME-WAIT
세션을 끝맺기 위한 절차는 완결되었으나 전송도중 혹시 발생했을 수 있는 분실되었을지 모르는 느린 패킷의 수신을 위해 당분간 소켓을 열어 놓은 상태로 유지되는 상태 입니다. 이 상태는 먼저 접속해제를 요청한 쪽에서 만 발생할 수 있습니다.
* CLOSED
정상적인 처리과정을 거쳐서 해당 세션이 끊어진 것을 의미합니다. TCP는 해당 세션에 대해서 일시적으로 사용되었던 모든 리소스를 해제 합니다.