sockets - TCP 服务器被只有 "connect"而没有发送任何数据的客户端淹没

标签 sockets tcp tcpclient tcplistener denial-of-service

我已经使用 .NET TcpListener 创建了一个 TCP 服务器。

我担心它会如何通过发送大量类似于 DoS 类攻击的虚假连接来滥用它。

我创建了一个小型控制台应用程序来重复启动与服务器的连接(仅“连接”而不传输其他类型的数据)。 “最大允许并发连接数限制”是服务器中的一项设置,旨在防止服务器不堪重负,这一设置立即得到满足。这使我的服务器几乎毫无用处,因为它无法接受新连接,除非其他假连接断开连接。这证明我的担心不是空穴来风。

我们有什么办法可以从应用程序级别防止这种情况发生吗? 我想要求客户端在连接时发送一种 token ,服务器会拒绝不发送的连接,但我认为 TCP 不会那样工作。

依赖外部解决方案是唯一的方法吗?例如。 VPN、防火墙、NAT 等?

最佳答案

在每个接受的套接字上设置读取超时,并在触发时关闭它。

关于sockets - TCP 服务器被只有 "connect"而没有发送任何数据的客户端淹没,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120291/

相关文章:

Python 多处理/套接字 - 错误的文件描述符

c - 在c中使用套接字重新连接

java - 什么会导致 TCP/IP 在不断开连接的情况下丢弃数据包?

c - AF_PACKET 套接字上的 Bind() 首先失败......然后自行修复?

带 GUI 的 Java 内存游戏 - 字符串和数组比较

c++ - 为什么我的服务器不向我的客户端发送任何内容

c - RHEL 7.1 中持久 TCP 连接的高可用性/故障转移

java - 在 Java 中使用 TCP 聊天

c# - 使用 c# 测量 tcp 上的数据传输速率

c# - 如何从.Net中的远程设备接收TCP IP消息