首页 文章

当连接太多时,传出的客户端TCP端口会被阻止

提问于
浏览
1

我有一个分发系统,用于在Windows上的目标客户端机器上执行文件操作并运行shell命令 . 我使用自定义TCP endpoints 连接到驻留在服务器上的Windows服务 .

现在我已经创建了这个工具,在一台机器上创建了该代理(客户端)的大量实例,并从服务器对所有这些实例集运行某个作业集 . 问题是客户端计算机上的所有传出TCP端口在启动超过几百个代理后都会被阻止 . 每个代理都使用动态端口并正在侦听单个服务器端口 .

说,我有2000个代理在端口2000-3999上运行,并且都在监听服务器上的端口5111 . 我在Windows事件日志中收到的错误消息如下:

TCP / IP无法 Build 传出连接,因为最近使用所选本地 endpoints 连接到同一远程 endpoints . 当以高速率打开和关闭传出连接时,通常会发生此错误,从而导致使用所有可用的本地端口,并强制TCP / IP重用本地端口以进行传出连接 . 为了最大限度地降低数据损坏的风险,TCP / IP标准要求从给定本地 endpoints 到给定远程 endpoints 的连续连接之间经过最短时间 .

发生这种情况时,此机器不再使用任何TCP端口 . 我确实尝试在注册表中更改一些TCP默认行为,但无济于事 . 打开连接之间的间隔在1到5秒之间 .

无论测试所需的激进网络活动如何,管理最佳延迟和/或以某种方式使Windows信任该应用程序的任何解决方法?

1 回答

  • 0

    如果在没有适当间隙的情况下打开连接,则会导致客户端上的所有端口因攻击性行为而被阻止 . 最后,我通过增加每个连接之间的延迟从1000毫秒到3000毫秒来连接我的所有代理 . 我仍然要弄清楚这种情况的动态,并且可能在并行线程而不是进程中打开代理程序毕竟是更好的解决方案 . 具有相同名称的大量进程似乎对操作系统没有吸引力 .

相关问题