# 정상적인 세션 닫기(종료) 처리
1. 세션 종료를 위해 클라이언트가 서버로 FIN 패킷을 보내고 서버에서는 닫기처리를 수행한다. 이때가 서버는 close_wait 상태가 된다.
2. 서버에서 닫기 작업이 완료되면 클라이언트에 닫기 완료 패킷을 보내게 되고 클라쪽에서 정상적인 세션 종료 처리가 이뤄진다.
그런데 서버쪽에서 먼저 클라에게 종료 패킷을 보내게 되는 경우가 클라는 close_wait 상태가 된다. 서버는 세션 종료가 끝나 상태인데, 클라쪽에서는 세션 종료를 위해 FIN 패킷을 서버로 보내고 응답을 계속 기다리게 된다. 하지만 서버에서 응답을 받지 못해 계속 close_wait 로 남아 있게 된다.
결국 클라이언트 입장에서 close_wait 로 빠지는 세션들에 대해서 확실한 종료 처리 과정이 있어야 한다.
막연히 생각나는 방법으로 close_wait 상태에서 일정 시간이 지나면 강제로 세션 정리를 한다던지... 좀더 고민이 필요한 부분이다.
참고
comments:
댓글 쓰기