乐趣区

关于tcp:如何使用了-SOREUSEADDR处于-TIMEWAIT-状态的连接还能安全地释放资源吗

参考:socket 服务器开发中的 SO_REUSEADDR 选项与让人心烦的 TIME_WAIT

应用了 SO_REUSEADDR 选项之后,处于 TIME_WAIT 状态的连贯会在 socket 敞开之后立刻开释资源,而不会期待 2MSL 工夫。这意味着这些资源能够立刻被从新应用,但也可能导致某些问题。

一种可能性是,如果 TIME_WAIT 状态的连贯在 2MSL 工夫内从新关上,可能会接管到旧的或意外的数据包,这可能导致不可预测的行为或平安问题。因而,开启 SO_REUSEADDR 选项时须要审慎,特地是在须要解决反复端口的状况下。

另外,如果多个过程在同一个端口上监听,当一个过程敞开连贯时,SO_REUSEADDR 可能会导致另一个过程接管到未预期的数据包。在这种状况下,应该应用 SO_REUSEPORT 选项来防止这种状况。

退出移动版