FIN_WAIT2????
글쓴이: namola / 작성시간: 수, 2004/02/11 - 7:34오후
SELECT 로 서버를 만들어서 약 클라이언트는 쓰레드로 1000개정도
생성해서...0.001초로 서버에 접속을 합니다.
클라이언트가 패킷을 보내고 서버는 패킷정보를 검사하여 그에 해당하는 정보를 가공하여 뿌려줍니다.
그리고 서버가 먼저 클라이언트를 끊어줍니다.
그리고 패킷도 양호하게 주고 받고 합니다.
그런데...netstat -an 해주니까...ESTABLISHED라고
나오지 않고 FIN_WAIT2로 나옵니다.
그래서 클라이언트 시간 타임을 1초정도 주고 서버에
접속을 하여도 마찬가지 입니다.
이런경우는 어떤경우이지요?
Forums:


[code:1]LISTEN : 현재 열린 포트로 누군
LISTEN : 현재 열린 포트로 누군가의 접속을 기다리는 상태 ESTABLISHED : 정상적으로 연결이 된 상태 SYN_SEND : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태 SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지를 받지 않은 상태 FIN-WAIT1 : 소켓이 닫혔고 연결이 종료되기를 기다리는 상태 FIN_WAIT2 : 연결이 닫혔음(접속 종료 신호에 대한 ACK를 받은 상태) TIME-WAIT : 소켓이 닫히고 원격 호스트 종료 재전송을 기다림 CLOSE-WAIT : 원격 호스트가 연결을 종료했음 LAST_ACK : 원격 연결이 종료되고 소켓이 닫힘 CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태 CLOSED : 완전히 종료몇몇자료를 혼합해서 정리했습니다.
FIN_WAIT2라는 메시지가 나오면 연결이 닫힌상태로 보이기는합니다만 서버측에서
처리가 지연되어서 그런게 아닌가 생각이 드네요.(사실 FIN-WAIT1은 종종 보이긴
하지만 FIN-WAIT2가 있다는건 처음 알았네요. :oops: )
------------------------------
좋은 하루 되세요.
서버에서 close 한 후에 클라이언트에서도 close()를 호출해 주어
서버에서 close 한 후에 클라이언트에서도 close()를 호출해 주어야
정상적인 종료상태가 됩니다.
FIN_WAIT2는 클라이언트에서도 close()를 호출하기를 기다리고 있는 상태입니다.
감사합니다.너무나 잘되네요...^^
감사합니다.
너무나 잘되네요...^^
쫌 늦었지만...
stevens 아저씨의 Unix Network Programming 2장에 보면
11개의 TCP 상태전이 그림이 나와있습니다.
참고하십시요.
나를 죽이지 않는 모든 것은 나를 강하게 할 뿐이다.
댓글 달기