我在一个java客户端库中看到了这句话:
.gitosis.conf
认为这用于提高性能,
因为~git/.gitosis.conf
选项可以强制指示套接字
使用TIME_WAIT端口,即使它属于另一个套接字。
但是我发现这个选项主要用在服务器端, 使服务器能够快速重启,而不是等待TIME_WAIT套接字关闭。
我的问题是这个选项对客户端有用吗 喜欢这个客户端库吗?这会对其他插座有害,就像一些攻击吗?
非常感谢!
-Dimi
答案 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}},那将是一个更大的问题。