SO_REUSEADDR套接字选项在客户端是否有用?

时间:2017-01-16 09:18:33

标签: linux sockets

我在一个java客户端库中看到了这句话:

.gitosis.conf

认为这用于提高性能, 因为~git/.gitosis.conf选项可以强制指示套接字 使用TIME_WAIT端口,即使它属于另一个套接字。

但是我发现这个选项主要用在服务器端, 使服务器能够快速重启,而不是等待TIME_WAIT套接字关闭。

我的问题是这个选项对客户端有用吗 喜欢这个客户端库吗?这会对其他插座有害,就像一些攻击吗?

非常感谢!

-Dimi

1 个答案:

答案 0 :(得分:1)

这取决于您所说的“客户”。您还提到了“客户端库”,它与此无关。

这经常被误解,SO_REUSEADDR能够重用TIME_WAIT中的套接字,而TIME_WAIT仅发生在TCP连接的一侧,启动终止序列,即发送第一个FIN数据包,即首先调用shutdown(SHUT_WR)或首先调用close,尽管后者不清楚/可能取决于其他因素,例如连接状态或平台,请先should not call close,然后再致电shutdown(SHUT_WR)This article以及本文末尾提到的两个内容都非常有用。很明显,TIME_WAIT可能在侦听(服务器)端和客户端都可能发生,并建议实际上让客户端始终启动终止(“活动关闭”),以使服务器不会在{{ 1}},那将是一个更大的问题。