undefined
undefined

TCP의 TIME_WAIT상태 (SO_REUSEADDR)

http://wwwi.tistory.com/tag/winsockTCP의 서버 프로그램을 종료한 바로뒤 다시 서버를 기동하면bind에서 에러(Address aleady in use)로 끝날 때가 있다.TCP의 서버 프로그램을 종료하고 다시 기동시켰는데 왜 bind가 되지 않을까?라고 생각하며 시간이 지난후 다시 기동시키면 문제업이 bind가 된다.이 문제는 TCP 자체 사양에 의하여 일어나는 문제이다.구체적으로는 TCP의 TIME_WAIT상태가 bind를 fail시킨다.서버는 TCP 세션을 받은 상태에서 close하면 TIME_WAIT상태가 된다.이때 주의해야되는 것은 TCP 서버의 TIME_WAIT가 발생하는 경우와발생하지 않는 경우가 있다는 것이다.TCP서버 쪽에서 close를 먼저 실행하면 TIME_WAIT상태가 발생하지만TCP클리아언트 쪽에서는 먼저 close를 실행해도 서버 쪽에TIME_WAIT가 발생하지 않는다.더 구체적으로 쓴다면 클라이언트가 먼저 FIN을 송신하면 TCP서버 쪽에는TIME_WAIT상태에 빠지지않는다.TIME_WAIT상태는 "netstat -na" 명령을 도스창에서 쳐보면 확인할 수 있다.TCP세션이 확립된 경우 "netstat -na"를 쳐보면 ESTABLISHED라고 표시되어진다.TCP세션이 종료된 후 "netstat -na" 명령을 쳐보면 TIME_WAIT생태를 볼수있다.TIME_WAIT상태는 ...