我正在阅读Richard Stevens 的UNIX Network Programming Volume 1 并尝试编写一个使用 Telnet 协议的 TCP Echo Client。我仍处于早期阶段并尝试编写读写函数。
我想写它来使用 I/O 多路复用和 Select 函数,因为它需要是多客户端的,我不想在尝试学习 Berkeley Sockets 库时尝试学习 C++ 线程同时。在 I/O 多路复用一章的末尾,Stevens 有一小节介绍 DOS 攻击,他说我计划使用的方法容易受到 DOS 攻击,这种攻击在连接后只发送一个字节然后挂起。之后他提到了 3 种可能的解决方案——非阻塞 IO、线程(出)和对 I/O 操作设置超时。
我的问题是,还有其他方法可以避免这种攻击吗?如果不是,其中哪一个是最好的?我浏览了关于设置操作超时的部分,但它看起来不像我想做的事情。他建议的方法看起来很复杂,我不知道如何将它们变成我已经拥有的。我只看了关于 NIO 的章节,看起来这是现在要走的路,但我想看看是否有其他方法可以解决这个问题,然后再花几个小时浏览这一章。
有任何想法吗?