私は、Richard Stevens によるUNIX Network Programming Volume 1 に取り組んでおり、Telnet プロトコルを使用する TCP Echo クライアントを作成しようとしています。私はまだ初期段階にあり、読み書き機能を書き込もうとしています。
マルチクライアントである必要があり、Berkeley Sockets ライブラリを学習しようとしているときに C++ スレッドの学習に取り組みたくないため、I/O 多重化と Select 関数を使用するように記述したいと思います。同時に。I/O 多重化に関する章の最後に、Stevens は DOS 攻撃に関する小さなセクションを持っており、私が使用することを計画していた方法は、接続後に 1 バイトを送信するだけでハングする DOS 攻撃に対して脆弱であると述べています。その後、彼は 3 つの可能な解決策について言及しています。つまり、ノンブロッキング IO、スレッド化 (アウト)、および I/O 操作にタイムアウトを設定することです。
私の質問は、そのような攻撃を回避する他の方法はありますか? そうでない場合、これらのうちどれが最高ですか? 操作にタイムアウトを設定するセクションをざっと見ましたが、やりたいことのようには見えません。それを行うために彼が提案する方法はかなり複雑に見えます。私は NIO の章をちらりと見ただけで、今のところそれが進むべき道のように見えますが、この章をさらに数時間掘り下げる前に、これを回避する他の方法があるかどうかを確認したいと思います.
何か案は?