-1


私はP2Pアプリケーションを開発しており、それを数千万人のユーザーにスケーラブルにしています。私はこれらの他の各ピアにパケットをブロードキャストしており、応答を期待しています。コーディングを進める前に、1分以内に数千万の異なるIPアドレスにパケットを送信できるかどうかを確認したいと思いました。そして、それらがすべて応答した場合、私のアプリケーションまたは私のPCでさえ、そのような短い時間でその数の接続とパケットを処理できるでしょうか?

TCPとWindowsの使用。
許容される最大CPU使用率:20%
インターネット帯域幅:WinSock2を使用したCプログラミングに基づく2Mbpsアプリケーションを想定2 GB RAM、Core 2 Duo、2.8GHzの通常のPCを想定

4

2 に答える 2

1

はい、できますが、UDPを使用する必要があるかもしれません。ただし、応答backcも自己DoSになります。

于 2013-01-17T18:26:48.807 に答える
1

一般に、数千万人のユーザーと 1 分以内に直接通信する必要があるアプリケーションは、利用可能なインターネット帯域幅と計算能力を備えたサーバーのクラスターに基づいているため、DoS 自体は実行されません。P2P アプリケーションでは、単一のホストで多数のユーザーと通信する必要はありません。特に、それほど短い時間枠内で通信する必要はありません。

Ray は正しく、メッセージを送信できたとしても、クライアント プログラムにさまざまな長さの意図的な遅延を多数配置して、応答の間隔をあけない限り、応答で自分自身を DoSing することになります。また、これを試みる場合は UDP を使用する必要があるという彼の意見も正しいです。お使いのオペレーティング システムが 10,000,000 の同時 TCP 接続の維持をサポートしているとは考えにくいと思います。

単一のホストから数千万のホストに通知を送信するには、元のホストが数千万のホストのリストのサイズ n の小さなサブセットに通知する必要があります。これらの各ホストは、さらに n 個のホストなどに通知します。これには、n log_n_(ホストの総数) のオーダーの時間と、ホストの数のオーダーの時間が必要になります。

応答メッセージが単に元のメッセージの受信確認である場合、これとは逆のシステムを確認に使用できます。各ホストは、メッセージを送信したホストに ack を送信できます。次に、そのホストがすべての ack を受信するか、タイムアウトが発生すると、送信元のホストに ack を送信します。メッセージには、どのホストが持っているかの情報が含まれています。既に ack を送信しています。このプロセスは、結合された ACK が元のホストに到達するまで、ツリーをバックアップし続けます。これは、数千万のオーダーではなく、元のホストに n オーダーの応答を受け取ることを意味します。

応答が単なる ack ではない場合、説明したハードウェアにリモートで近いものに対してアプリケーションを拡張できない可能性があります。ほとんどの場合、自分で DoS を実行し、ISP から厄介なメッセージを受け取る可能性が非常に高くなります。

于 2013-01-17T22:06:17.157 に答える