禁用 TCP 同步重新传输



我正在开发一个通过TCP连接到服务器的客户端。服务器的配置使得如果一台服务器关闭,则与另一台服务器建立连接。

我的要求是,如果在 2 秒内没有与第一台服务器建立 TCP 连接,客户端需要与第二台服务器建立连接。

以下是我基于测试的观察结果-TCP SYN 消息由客户端发送到第一台服务器以建立连接。由于第一台服务器关闭,1 秒后,TCP SYN 重新传输到第一台服务器。2秒后(由于处理和网络延迟(,客户端将TCP SYN消息发送到第二台服务器。因此,将 SYN 消息发送到第二台服务器需要 3 秒(1 秒 + 2 秒(,这不是我想要的。我希望 TCP SYN 消息在 2 秒内发送到第二台服务器。

为了在 2 秒内将 TCP SYN 消息发送到第二台服务器,我想避免 TCP SYN 重新传输。

我尝试在/etc/sysctl.conf 中设置 net.ipv4.tcp_syn_retries=0。但是我得到了 1 个 TCP SYN 重传。

那么有没有办法在不更改内核源代码的情况下禁用来自用户空间的 TCP SYN 重新传输?

我的要求是,如果在 2 秒内没有与第一台服务器建立 TCP 连接,客户端需要与第二台服务器建立连接。

在这种情况下,只需在客户端执行超时为 2 秒的连接,如果连接不成功,请重试其他服务器。关闭套接字后,内核将停止尝试连接到第一台服务器。这比摆弄 TCP 的内置可靠性行为和计时要好得多,并且更独立于特定平台。

最新更新