[unix] 프로그램이 종료 된 후 수신 TCP 포트를 정리하는 데 몇 분이 걸리는 이유는 무엇입니까?

TCP 포트에서 수신 대기중인 프로그램을 종료하면 시스템이 포트를 회수하여 다시 사용할 수있을 때까지 몇 분이 걸립니다. 나는이 현상에 대해 몇 가지 Q / A를 보았지만 설명은 없습니다. 왜 그런 일이 발생합니까, 왜 시스템이 포트를 바로 회수하지 않습니까? Windows 또는 Mac과 같은 다른 시스템에서도 발생합니까?



답변

이 배후의 아이디어는 해당 포트에서 수신 대기중인 이전 프로그램을 대상으로하는 패킷을받지 않도록하는 것입니다. 이 TIME_WAIT상태는 RFC793 에서 최대 세그먼트 수명의 두 배로 정의됩니다 .

다른 운영 체제에 대해서는 잘 모르지만 이러한 운영 체제에는 모두 비슷한 동작이 있다고 가정합니다.

이 문제의 해결 방법 SO_REUSEADDRTIME_WAIT상태를 무시해야하는 소켓 에 설정 하는 것 입니다.


답변