相关疑难解决方法(0)

如何将TCP连接重新连接到同一端口?

机器是RHEL 5.3(内核2.6.18).

有时我在netstat中注意到我的应用程序有连接,当本地地址外地址相同时建立了TCP连接.

这里同样的问题,有人报道过别人.

症状与链接中描述的相同 - 客户端连接到本地运行的服务器的端口X端口.一段时间后,netstat显示客户端已连接127.0.0.1:X127.0.0.1:X

怎么可能?

编辑01

同时打开导致问题(非常感谢Hasturkun).您可以在从SYN_SENT状态转换为SYNC_RECEIVED的经典TCP状态图中看到它

linux networking tcp

22
推荐指数
2
解决办法
8118
查看次数

TCP同时打开和自连接预防

TCP标准具有"同时打开"功能.

当端口来自短暂范围时,客户端尝试连接到本地端口时,该功能的含义可能偶尔会连接到自身(请参阅此处).

所以客户认为它连接到服务器,而它实际上连接到自身.从另一方面来说,服务器无法打开其服务器端口,因为它被客户端占用/窃取.

我正在使用RHEL 5.3,我的客户不断尝试连接到本地服务器.最终客户端连接到自身.

我想防止这种情况发生.我看到了两个可能解决问题的方法:

  1. 不要将临时端口用于服务器端口.同意临时端口范围并在您的机器上进行配置(参见临时范围)
  2. 检查connect(),就像有人在这里提出的那样.

你觉得怎么样?你是如何处理这个问题的?

PS 1

除了我明显寻求的解决方案之外,我希望您能分享您对问题的真实体验.

当我找到问题的原因时,我对我的工作场所感到"惊讶",人们并不熟悉它.通过定期连接轮询服务器是恕我直言的常见做法,所以问题是如何通常不为人所知.

c++ networking tcp

12
推荐指数
2
解决办法
4343
查看次数

标签 统计

networking ×2

tcp ×2

c++ ×1

linux ×1