Pet*_*etr 28 networking tcp resources
如果我终止一个正在侦听 TCP 端口的程序,则该端口被系统回收并再次可用之前需要几分钟的时间。我看到几个 Q/A 提到了这种现象,但没有解释。为什么会发生这种情况,为什么系统不立即回收端口?它是否也发生在其他系统上,例如 Windows 或 Mac?
Ulr*_*gel 27
这背后的想法是确保您不会收到针对在该端口上侦听的先前程序的数据包。此TIME_WAIT状态在RFC793 中定义为最大段寿命的两倍。
我不知道其他操作系统,但我认为所有这些都有某种类似的行为。
此问题的解决方法是SO_REUSEADDR在应忽略TIME_WAIT状态的套接字上进行设置。