首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抗DDoS网络应用设计

抗DDoS网络应用设计
EN

Stack Overflow用户
提问于 2014-02-25 02:29:37
回答 1查看 264关注 0票数 2

好的,对于我的应用程序,我尝试选择一个尽可能抵抗DDoS攻击的架构。显然,它永远不会是完美的,但我希望保护它免受简单的攻击。

到目前为止,我已经想到了几个:

1)每个连接单线程。

这种方法似乎有令人难以置信的可伸缩性问题,而且对于大量的连接,拥有太多的线程对操作系统来说似乎是一个调度噩梦。

2) 2个线程。第一个线程将接受连接并将它们附加到一个列表中,第二个线程循环遍历列表(在这里使用正确的同步),并检查InputStream中是否有任何内容。找到东西后,读一行。任何实际的工作都将在一个新的事件线程中完成,包括回复。新线程只是被传递给被读取的行。

这种方法似乎有更大的问题。看起来似乎一个简单的cat /dev/urandom | telnet server port就可以锁定它。

3)这类似于#2,但在每次迭代时只从每个连接读取一个字节,并在到达换行字节时将其作为字符串处理。

到目前为止,这似乎是我最好的选择,但这意味着,如果攻击发起了大量连接并在所有连接上发送输入,则可能会显著降低循环速度。

有没有其他可能更适合这项工作的潜在架构?

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 20:34:46

大公司有整个团队,他们每天都在工作,以对抗各种DOS攻击。在这里讨论太多了。在使用简单的缓解技术(如SYN-cookies等)之后,您最好的选择就是拥有足够的容量来“吃掉它”。

为了提高效率,我建议编写代码,然后在Google或Amazon这样的托管服务上运行它,让它们来处理DOS攻击的防御,并扩展您的服务来处理此类峰值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21995978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档