【问题标题】:is it a good idea to reuse port using option SO_REUSEADDR which is already in TIME_WAIT state?使用已经处于 TIME_WAIT 状态的选项 SO_REUSEADDR 重用端口是个好主意吗?
【发布时间】:2015-01-02 13:13:28
【问题描述】:

我知道关于 SO_REUSEADDR 已经有很多问题了。我仍然无法理解它的缺点并且没有几个问题。

1]当我们不使用任何延迟选项时,与 SO_REUSEADDR 相关的危险是什么。

2]会不会有丢包的情况?

3]如果我在端口上得到了及时等待状态的东西会发生什么?

4]TIME_WAIT 内收到的数据包会发生什么?

最后但非常重要的

5]在任何时间点有很多端口处于 TIME_WAIT 状态是否会对性能产生影响?

【问题讨论】:

    标签: c performance sockets tcp sctp


    【解决方案1】:

    缺点是您可能会收到用于较早连接但与新连接无关的数据,从而破坏该通信会话。 TIME_WAIT 的全部意义在于允许操作系统清除挥之不去的数据。如果在TIME_WAIT 状态下接收到 IP/端口的数据包,则丢弃该数据包。通过使用SO_REUSEADDR,您可以绕过安全锁。

    如果您有很多处于TIME_WAIT 状态的端口,可能会导致端口耗尽,这会阻止新连接建立,直到TIME_WAIT 状态的端口清理干净。

    【讨论】:

    • 在我的情况下,端口耗尽是非常罕见的情况,我最多可以有 1000 个或说 2000 个连接。但是如果我有 100-200 端口处于等待状态。它会对性能产生任何影响。因为在这种情况下,我将成为处于时间等待状态的每个端口的 TCP 控制块。我担心的是,这种影响会很大吗?
    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多