通常,需要在一分钟内与数千万用户直接通信的应用程序将基于具有可用互联网带宽和计算能力的服务器集群,因此它们本身不会 DoS。P2P 应用程序不应该要求单个主机与那么多用户进行通信,尤其是在这么短的时间范围内。
雷是正确的,即使您能够发送消息,您最终也会对自己的响应进行 DoSing,除非您在客户端程序中故意放置许多不同长度的延迟以隔开它们的响应。如果您要尝试这样做,他应该使用 UDP 也是正确的。我发现您的操作系统不太可能支持维护 10,000,000 个并发 TCP 连接。
为了从单个主机向数千万主机发送通知,原始主机应通知数千万主机列表中大小为 n 的某个小子集。这些主机中的每一个将依次通知 n 多个主机,依此类推。这将需要 n log_n_(主机总数)时间与主机时间数量的顺序。
如果响应消息只是对收到原始消息的确认,则可以将与此相反的系统用于确认。每个主机都可以向发送消息的主机发送一个 ack,然后一旦该主机收到所有的 ack 或发生超时,它就会向发送它的主机发送一个 ack,其中包含哪些主机的信息已经给它发了一个ack。此过程继续备份树,直到组合的 ack 到达原始主机。这意味着您会收到大约 n 个返回给原始主机的响应,而不是数千万的数量级。
如果响应不仅仅是一个确认,那么您的应用程序可能无法扩展任何远程接近您描述的硬件的东西,因为在太短的时间内将有太多的传入数据。您很可能会自己进行 DoS 攻击,并且很可能会从您的 ISP 那里得到一个 nastygram。