サーバーからクライアントへの TCP ストリームでは、サーバーからのすべてのパケットに PSH フラグが設定されます。このフラグが設定される原因は古き良き Nagle にあるのでしょうか?
答え1
プッシュ フラグ (PSH
またはP
) は、送信ホストによって設定されます。送信アプリケーションが 100 バイトの書き込みまたは送信を使用する場合、各パケットに がPSH
設定されます。送信者が 2000 バイトを送信する場合、標準フレーム サイズが 1500 であると仮定すると、2 つのパケットで送信され、2 番目のパケットにフラグが設定されますPSH
。
プッシュ フラグは、受信ホストに対して、受信したデータを受信アプリケーションにすぐに渡す必要があることを示します。
答え2
プッシュ フラグの設定は、通常、送信アプリケーションではなく、送信 TCP 層によって制御されます。最近の TCP/IP スタックのほとんどは、 send() に提供されるバッファーの最後に PSH ビットを設定します。
答え3
P ビットを常に設定することは標準的には正しいですが、古い TCP スタックから発生する非効率的な動作です。