すべての TCP パケットに PSH フラグが設定されていますが、その責任は誰 / 何が負うのでしょうか?

すべての TCP パケットに PSH フラグが設定されていますが、その責任は誰 / 何が負うのでしょうか?

サーバーからクライアントへの TCP ストリームでは、サーバーからのすべてのパケットに PSH フラグが設定されます。このフラグが設定される原因は古き良き Nagle にあるのでしょうか?

答え1

プッシュ フラグ (PSHまたはP) は、送信ホストによって設定されます。送信アプリケーションが 100 バイトの書き込みまたは送信を使用する場合、各パケットに がPSH設定されます。送信者が 2000 バイトを送信する場合、標準フレーム サイズが 1500 であると仮定すると、2 つのパケットで送信され、2 番目のパケットにフラグが設定されますPSH

プッシュ フラグは、受信ホストに対して、受信したデータを受信アプリケーションにすぐに渡す必要があることを示します。

答え2

プッシュ フラグの設定は、通常、送信アプリケーションではなく、送信 TCP 層によって制御されます。最近の TCP/IP スタックのほとんどは、 send() に提供されるバッファーの最後に PSH ビットを設定します。

ソース: プッシュフラグを待たずにTCPのレイテンシを改善

答え3

P ビットを常に設定することは標準的には正しいですが、古い TCP スタックから発生する非効率的な動作です。

関連情報