POST リクエストが最初のパケットで PSH フラグを使用するのはなぜですか?

POST リクエストが最初のパケットで PSH フラグを使用するのはなぜですか?

POST HTTP トランザクションの動作を理解しようとしています。複数のパケットを送信する必要のある長い URI を持つ GET リクエストがある場合、最後のパケットで PSH フラグが使用され、データを受信側アプリケーションにすぐにプッシュする必要があることをサーバーに通知します。

ただし、POST リクエストでは、imgur に画像をアップロードするなど、完了するまでペイロードのすべてのチャンクに PSH フラグが存在します。間違っていたら訂正してください。この動作は、トランザクションのすべてのチャンクが大きく、巨大なバッファを回避するためにできるだけ早く上位層に送信する必要があるためであり、この動作はリアルタイムおよびインタラクティブ アプリケーションで使用されていると思います。しかし、これは標準ですか? この動作はすべての POST リクエストで想定されるものですか?

前もって感謝します

答え1

「この動作は、トランザクションの各チャンクが大きく、巨大なバッファを回避するためにできるだけ早く上位層に送信する必要があるためであり、この動作はリアルタイムおよびインタラクティブなアプリケーションで使用されると思います。」

あなたが記述する動作は、送信クライアント (ソフトウェア) によって決まります。TCP および UDP の実装に関するよくある誤解は、コーディングする方法が 1 つしかないということですが、コーディング時には選択肢があります...そして、すべてのプログラマーが同じ選択をするわけではありません。RFC はあなたの味方です。

http://www.freesoft.org/CIE/RFC/1122/88.htm 「アプリケーションが PUSH フラグを設定せずに一連の SEND 呼び出しを発行すると、TCP はデータを送信せずに内部で集約する場合があります。同様に、PSH ビットなしで一連のセグメントを受信すると、TCP はデータを受信側アプリケーションに渡さずに内部でキューに入れる場合があります。」

5月この文では、プログラマー (送信クライアント) に PSH ビットを設定するかどうかの選択肢が与えられています。あなたが説明しているケースでは、プログラマーは、一連のペイロードをバッファリングしてスタックに一度に送信するよりも、ペイロードをスタックにアプリケーションに送信することを優先することを選択しました。

お役に立てれば幸いです。

関連情報