What is TCP PSH

PSH (Push) is a TCP flag that tells the receiving side to deliver buffered data to the application immediately instead of waiting for more packets to arrive.

When is it used?

Without PSH, TCP may hold received data in a kernel buffer, waiting to accumulate more before notifying the application. This improves efficiency but adds delay. The PSH flag signals that the sender has finished writing a logical message and the receiver should flush its buffer now.

You see PSH most often on the last packet of a message. When an HTTP client sends a request, the final packet carries the PSH flag — telling the server's TCP stack to deliver the complete request to the web server process immediately.

Does it affect reliability?

No. PSH doesn't change how TCP handles acknowledgments, retransmissions, or ordering. It's purely a hint about delivery timing. A packet with PSH set is processed exactly like any other packet — it's just delivered to the application sooner.

Why it matters

PSH is a minor but visible flag in packet captures. If you're reading a tcpdump trace and see [P.] (Push + ACK), it means the sender finished writing a chunk of data and wants the receiver to process it. It's a useful signal for understanding message boundaries in a TCP stream.