java tcp/ip 소켓 닫았을때 tcp/ip 신호가 이상합니다.
넌블락-소케채널 폴을 만들어서 단위테스트 중입니다.
연결 2개를 해 놓고 4개 쓰레드에서 각각 한번씩 닫은후 재 연결을 시도합니다.
그래서 총 6개의 연결이 있는데요.
1초 단위로 netstat 상태를 보고 있는데
단위 테스트 종료시까지 ESTABLISHED 상태로 6개가 보이네요.
"CLOSE_WAIT & TIME_WAIT 최종 분석" 글에서 TCP 커넥션 다이어그램을 보면 소켓을 닫으면 FIN_WAIT 가 발생하는데 왜 검출이 안되는걸까요?
1초 단위로 봐서 놓친걸까요? 아니면 제가 무엇을 잘못해서 그런걸까요.
고수님의 도움을 바랍니다.
---------- 클라이언트쪽 소켓 채널 옵션
serverSC = SocketChannel.open();
serverSelectableChannel = serverSC.configureBlocking(false);
serverSC.setOption(StandardSocketOptions.SO_KEEPALIVE, true);
serverSC.setOption(StandardSocketOptions.TCP_NODELAY, true);
serverSC.setOption(StandardSocketOptions.SO_LINGER, 0);
serverSC.setOption(StandardSocketOptions.SO_REUSEADDR, true);
"CLOSE_WAIT & TIME_WAIT 최종 분석" 참고 주소 : http://tech.kakao.com/2016/04/21/closewait-timewait/
자문 자답합니다.
위와 같은 현상은 serverSC.setOption(StandardSocketOptions.SO_LINGER, 0); 때문이네요.
"TCP의 단절 감지 : 유령 세션" 참고 주소 : http://ozt88.tistory.com/19
댓글 달기