私の質問の1つで(「TCP接続フローを任意に操作すると問題が発生する可能性がありますか?」)TCP接続の自発的な遅延が問題を引き起こす可能性があるかどうか尋ねました。
私のHTTPプロキシはクライアントとサーバーの間にあり、内部的に優先順位キューメカニズムを持っています。つまり、クライアントまたはサーバーからのパケットは優先順位キューにプッシュされ、ドロップスレッドは優先順位キューから最も高い優先順位パケットを削除します。
私は聞いた
問題は、TCPに並べ替えの問題を解決するための明示的なメカニズムがあることです。これには、送信者にパケットの再送信を強制する NACK が含まれる場合があります。
TCPストリームでバイトを「優先順位」に並べ替えると、せいぜい大量のデータが再送信されるため、「優先順位」はすべてを下げます。しかし、TCPフローがあまりにも中断された場合、どちらかを放棄する可能性が非常に高いです。
私はTCPが失われたパケットの再送信と他のすべての機能を備えた信頼できるプロトコルであることを知っていますが、クライアントまたはサーバーからデータを受信してすぐにデータをサーバーに送信するのではなく、キューにプッシュするとき、またはTCPがいくつかの反対意見がある点を考慮していません。クライアントの場合、これらの遅延が発生します。
愚かな私。 (私の考えでは)要求がサーバーに送信されたら、サーバーにパケット転送を待つように指示する方法がないので、パケット損失に対するTCPの許容値を調整する方法はありますか?失われたものではなく優先順位キューにプッシュされ、削除スレッドが自分の番であると考えると、宛先に送信されますが、TCPの信頼性は同意しない可能性があります。