![프로그램이 종료된 후 수신 TCP 포트를 정리하는 데 최대 몇 분이 걸리는 이유는 무엇입니까?](https://linux55.com/image/30058/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20%EC%A2%85%EB%A3%8C%EB%90%9C%20%ED%9B%84%20%EC%88%98%EC%8B%A0%20TCP%20%ED%8F%AC%ED%8A%B8%EB%A5%BC%20%EC%A0%95%EB%A6%AC%ED%95%98%EB%8A%94%20%EB%8D%B0%20%EC%B5%9C%EB%8C%80%20%EB%AA%87%20%EB%B6%84%EC%9D%B4%20%EA%B1%B8%EB%A6%AC%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
TCP 포트에서 수신 대기 중인 프로그램을 종료하면 시스템이 포트를 회수하고 다시 사용할 수 있을 때까지 몇 분 정도 걸립니다. 여러 Q&A에서 이 현상에 대해 언급했지만 설명이 없는 것을 보았습니다. 이런 일이 발생하는 이유는 무엇이며 시스템이 포트를 즉시 재활용하지 않는 이유는 무엇입니까? Windows나 Mac과 같은 다른 시스템에서도 이런 일이 발생합니까?
답변1
그 뒤에 있는 아이디어는 해당 포트에서 수신 대기 중인 이전 프로그램을 위한 패킷을 수신하지 않도록 하는 것입니다. 이 TIME_WAIT
상태는 다음에 정의되어 있습니다.RFC793최대 세그먼트 수명의 두 배입니다.
다른 운영 체제에 대해서는 모르지만 모두 비슷한 동작을 한다고 가정합니다.
이 문제의 해결 방법은 다음과 같습니다.SO_REUSEADDR
상태를 무시해야 하는 소켓에서 TIME_WAIT
.