tcpdump flag por flag _PSH

PSH (Push)

O PSH (Push) é uma flag do protocolo TCP que indica que os dados recebidos devem ser entregues imediatamente à aplicação, sem aguardar que o buffer de recepção seja preenchido.

Como funciona?
Normalmente, o TCP pode acumular dados em um buffer antes de entregá-los à aplicação para aumentar a eficiência. Quando o transmissor define a flag PSH, ele solicita ao receptor que:

Não espere acumular mais dados.
Entregue imediatamente os dados recebidos ao processo da aplicação.

Importante: O PSH é uma solicitação, não uma obrigação. A implementação da pilha TCP do sistema operacional decide como tratá-la.

Exemplo prático

Imagine uma sessão Telnet ou SSH:

Você digita a letra “A”.
O cliente envia um segmento TCP contendo apenas esse caractere.
O segmento é enviado com a flag PSH.
O servidor entrega imediatamente o caractere ao processo Telnet/SSH, permitindo que ele apareça instantaneamente na tela.

Sem o PSH, o TCP poderia aguardar mais caracteres antes de entregá-los à aplicação.

No Wireshark ou tcpdump
Você verá algo semelhante a:
Flags [P.]

ou
PSH, ACK

Onde:

P = PSH (Push)
. = ACK (Acknowledgment)

Exemplo:
10.0.0.1:443 > 10.0.0.2:51234 Flags [P.], seq 1501:2001, ack 800, length 500

 

Significa que o servidor está enviando 500 bytes de dados e solicita que eles sejam entregues imediatamente à aplicação.

O PSH indica problema?

Não. A presença da flag PSH é completamente normal. Ela aparece com frequência em:

HTTPS (TLS)
SSH
Telnet
Aplicações web
Bancos de dados
APIs
Streaming de dados

É comum encontrar milhares de pacotes com PSH em uma captura de rede

Em análises de tcpdump ou Wireshark, um pacote com PSH geralmente significa:

O emissor enviou dados da aplicação.
O receptor deve disponibilizar esses dados imediatamente para a aplicação.

Por exemplo:
Cliente → Servidor
PSH, ACK

O servidor respondeu com dados (como uma resposta HTTP ou informações da aplicação).

Relação com outras flags TCP

| Flag | Significado |
| —- | ————————————————————– |
| SYN | Inicia a conexão TCP. |
| ACK | Confirma o recebimento de dados. |
| PSH | Solicita a entrega imediata dos dados à aplicação. |
| FIN | Encerra a conexão de forma normal. |
| RST | Reinicia ou aborta a conexão imediatamente. |
| URG | Indica que há dados urgentes (raramente utilizada atualmente). |

 

No seu contexto de análise de rede

Como você costuma analisar tcpdump para investigar instabilidades em conexões TCP (RADIUS, VPN, aplicações IoT etc.), a presença de PSH normalmente indica apenas que há troca efetiva de dados da aplicação. Por si só, ela não representa erro nem perda de comunicação. O que merece atenção é quando pacotes com PSH passam a ser seguidos por eventos como:

Retransmissões TCP (dados não confirmados).
RST (reinício abrupto da conexão).
Timeouts.
Longos intervalos sem ACK.
Repetição de PSH com o mesmo número de sequência (indicando retransmissão).

Nesses casos, o problema normalmente está relacionado à perda de pacotes, latência elevada, congestionamento ou falhas no caminho da comunicação, e não à flag PSH em si.