TCP PUSH関数のほとんどの説明では、PUSH機能では、送信者がデータをすぐに送信する必要があるだけでなく(バッファーがいっぱいになるのを待たずに)、データを受信側の受信アプリケーションにプッシュする必要があると述べられています。サイド、バッファリングなし。
私が理解していないのは、なぜTCPが受信側でデータをバッファリングするのかということです。結局のところ、TCPセグメントはIPデータグラムで移動し、IPデータグラム全体が処理されます(つまり、IP層は、任意のセグメントを運ぶIPデータグラムのフラグメントの必要な再構成を行った後、セグメント全体のみをTCP層に配信します)。それでは、受信側のTCP層がこのデータをアプリケーションに配信するのを待つのはなぜですか?1つのケースは、アプリケーションがその時点でデータを読み取っていなかった場合です。ただし、その場合、データをアプリケーションに強制的にプッシュすることはできません。したがって、私の質問は、なぜPUSH機能がレシーバー側の動作について何かを指示する必要があるのかということです。セグメントが到着したときにアプリケーションがデータを読み取っていることを考えると、そのセグメントはとにかくすぐにアプリケーションに配信される必要があります。
誰かが私の疑問を解決するのを手伝ってもらえますか?