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

使用了 SO_REUSEADDR 选项之后,处于 TIME_WAIT 状态的连接会在 socket 关闭之后立即释放资源,而不会等待 2MSL 时间。这意味着这些资源可以立即被重新使用,但也可能导致某些问题。

一种可能性是,如果 TIME_WAIT 状态的连接在 2MSL 时间内重新打开,可能会接收到旧的或意外的数据包,这可能导致不可预测的行为或安全问题。因此,开启 SO_REUSEADDR 选项时需要谨慎,特别是在需要处理重复端口的情况下。

另外,如果多个进程在同一个端口上监听,当一个进程关闭连接时,SO_REUSEADDR 可能会导致另一个进程接收到未预期的数据包。在这种情况下,应该使用 SO_REUSEPORT 选项来避免这种情况。


universe_king
3.4k 声望678 粉丝

引用和评论

0 条评论