あるコンピューターから別のコンピューターにパケットを送信し、1 本のイーサネット ケーブルを介して直接接続する場合、UDP を使用して受信側コンピューターを常にポーリングするか、送信者が Java RMI を使用して受信側にパケットを「渡す」方が速いですか?コンピューター?
パフォーマンスの変動があるかどうかは知りませんでしたか?
受信確認を気にする必要がないため、送信に追加の確認オーバーヘッドがないため、一般にUDPを実行する方が高速です。
TCP では、データの送信元に送信される確認応答があります。全二重通信では、着信データ ストリームを中断することなく、この確認応答の送信を行うことができます。ただし、その受信確認が送信者に返され、その送信者がそれを処理するまで、ある程度の時間待つ必要があります。
両方のコンピューターがデータ ストリーム処理を処理するのに十分な速度を備えていると想定されていますが、現実の世界では、コンピューターが複数のタスクを実行していることに気づき、回線速度でネットワーク トラフィックを処理する能力を妨げる可能性があります。このようなシナリオでは、送信側のコンピューターが確認応答を十分な速さで受信できない場合 (または受信側のコンピューターが確認応答を十分な速さで送信できない場合)、未確認パケットのウィンドウを使い果たす可能性があります。送信されたものは再送信が必要になるか、受信されました。
しかし、UDP はバラバラではありません。受信を確認しないための解決策は、パケットがいつでも通知なしに消えることを許可することだからです。そのため、完全に送信する必要のないデータ (ライブ音声、ドロップされた場合は、すべてを収集するよりも「現在」のパケットから開始することが重要です)、または再送信が管理されているデータに最適です。より効率的なアプリケーション固有のアルゴリズムによって。