0

サーバーがTCP接続を使用してクライアントに送信した最後のバイトを把握できるかどうか疑問に思っています。詳細に説明すると、クライアントとサーバーがあり、どちらも C++ で記述されています。それらは XMLRPC を使用して通信しており、接続は TCP です。クライアントはサーバーに大きなリクエストを送信することができ、サーバーが応答するまでに時間がかかる場合があります。接続のどの部分でも、切断された場合、プロセス全体を最初から実行する必要があるため、サーバーが DoS 攻撃に対して脆弱になります。

私の質問は、接続が切断された場所を特定して、接続を再確立した後 (同じクライアントがいくつかの ID を使用している場合)、サーバーが要求を再度処理する代わりに、前の要求から残りのバイトを送信できるかどうかです。

4

1 に答える 1

2

そのサポートをプロトコルにコーディングする必要があります。たとえば、応答を 4096 バイトのチャンクに分割します。その後、クライアントは再接続して、「最初の 19 ブロックを受け取りました。ブロック 20 を続けてください!」と言うことができます。

于 2013-02-28T17:51:38.323 に答える