我知道关于SO_REUSEADDR已经有很多问题了。尽管如此,我还是无法理解它的缺点,也没有什么问题。
1] 当我们不使用任何延迟选项时,与SO_REUSEADDR相关的危险是什么。
2] 是否会出现数据包丢失的情况?
3] 如果我在端口上得到了一些处于时间等待状态的东西,会发生什么?
4] TIME_WAIT中接收到的数据包会发生什么情况?
最后但非常重要的
5] 在任何时间点使许多端口处于TIME_WAIT状态是否会对性能产生影响?
缺点是,您可能会收到用于早期连接而与新连接无关的数据,从而损坏通信会话。TIME_WAIT
的全部目的是允许操作系统清除延迟数据。如果接收到针对处于TIME_WAIT
状态的IP/端口的数据包,则丢弃该数据包。通过使用SO_REUSEADDR
,您可以绕过那个安全陷阱。
如果您有许多端口处于TIME_WAIT
状态,则可能会导致端口耗尽,从而在TIME_WAIT
中的端口清除之前无法建立新连接。