C++ - 检测到服务器的多个连接

标签 c++ linux tcp

在 Linux/C++ TCP 服务器中,我需要防止恶意客户端打开多个套接字,否则他们可能只会打开数千个连接,直到服务器崩溃。

检查同一台计算机是否已在服务器上建立连接的标准方法是什么?如果我根据 IP 地址进行操作,那是否意味着同一屋子里的两个人即使在不同的计算机上也无法同时连接到服务器?

任何信息都有帮助! 提前致谢。

最佳答案

TCP 本身并没有真正提供除用于识别客户端的 IP 地址之外的任何内容。几个(非排他性的)选项:

1) 将来自任何 IP 地址的连接数限制为合理的数量,例如 10 或 20(取决于您的系统实际执行的操作。)这样,它将防止恶意 DoS 攻击,但仍允许合理的可用性。

2) 将最大连接数限制在合理范围内。

3) 您可以将此委托(delegate)给更高层的解决方案。作为协议(protocol)的一部分,让客户端发送一个仅生成一次的唯一标识符(每次安装等)。然而,这很容易被欺骗。

我相信 1 和 2 是处理它的服务器数量。将它们放在配置文件中,以便根据场景对其进行调整。

关于C++ - 检测到服务器的多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268722/

相关文章:

c++ - I/O 流真的是线程安全的吗?

c++ - boost 异步服务器两次接受连接

c++ - 返回对临时对象成员的 const 引用

c++ - noexcept 指定函数不抛出的条件

.net - 使用 Windows 身份验证从 Mono 调用 WCF 服务

python - Python3中sys.stderr是 block 设备还是字符设备?

linux - 无法从不同的机器访问 weblogic 控制台

google-app-engine - 如何在 golang 中在 google appengine 上构建 TCP 监听器或服务器?

java - Netty io.netty.buffer.ByteBuf.array() 抛出异常 - 直接缓冲区

c# - 奇怪的tcp连接场景