>> Edit article
이름
제목
패스워드
: netstat -a라는 명령어를 통해서 보면요... : : TIME_WAIT 라는게 엄청 나오는데요... TCP/IP에서 소켓의 상태를 나타내는 단계가 몇가지 있는데 그 전과정을 지금 정확히 기억은 하지 못하겠구여, TIME_WAIT만 간단히 설명드리도록 하겠습니다. Client가 Server로 특정 메시지 (패킷이겠죠)를 send한다고 해서 그 순간 에 바로 전송이 일어나는건 아닙니다. 네트웍의 상태나 랜카드 드라이버 상위스택의 상황에 따라서 딜레이가 일어나기도 하고 네트웍으로 패킷이 나가면 그때부터는 라우터의 뺑뺑이등 온갖 복잡한 메커니즘을 통해서 목 적지에 도착을 하게됩니다. 이게 한개 보내면 반드시 목적지에 도착을 하 는게 아니라 중간에 사리지기도 하고, 먼길로 돌아서 가기도 합니다. 근 데 보낸쪽에서는 마냥 기다릴수가 없으니까 일정시간 (Time out)이 지나면 다시 패킷을 보냅니다. 상황에 따라서 나중에 보낸 이 패킷이 먼저 보낸 녀석 보다 먼저 도착을 하고 나중에 먼저 보낸 패킷이 도착을 하는 경우도 있습니다. 그러면 서버에는 받았다라는 패킷을 두개보내는 경우도 있고, 한개를 보내는데 위에서 설명한 두개보내는 길을 타서 두개 보낼수도 있 습니다. 그런데 클라이언트가 1개의 패킷을 받고 정상 종료되었습니다. 그리고 나서는 다시 새로운 클라이언트가 같은 포트로 통신을 시도하려고 하는데 아까위의 패킷이 도착을 했습니다. 물론 이런거 체크를 하도록 프 로그램을 만들었겠지만, 잘못된 패킷을 받을수도 있고 이 패킷때문에 오 류가 발생할수도 있습니다. 그래서 패킷왕복시간*2 만큼의 시간동안 그 포트를 사용하지 못하도록 잠시 대기 상태로 만들어 두는겁니다. 그 상태 가 TIME_WAIT죠. 위의 상황은 그냥 제가 설명드릴려고 만들어낸 어거지 상황이구여, 실제는 좀 다르죠. ^^ 일반적인 경우라면 이 TIME_WAIT 상태 일때는 그 포트를 통해서 통신을 할수 없습니다만, sockopt등을 통해서 사용가능하게 만들수도 있습니다. 자세한 내용은 TCP/IP에 대해서 나온 책을 보시면 아실수 있을겁니다. 다 른 상태에 대해서도요.. ^^--술.. 웩~
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved