O amiguinho aí de cima postou os conceitos de PSH e URG, segundo o qual PSH Entrega imediata de dados
e o URG é Urgência. Mas, afinal, Qual a diferença do bit PSH e do bit URG no cabeçalho TCP?
Segundo esta fonte[1], O bit PSH (push) é utilizado pelo emissor para notificar o receptor que ele deve passar todos os dados que possui (armazenados no buffer) para a aplicação sem que se tenha que esperar que outros dados sejam recebidos.
Como exemplo prático, tem-se uma aplicação interativa. Quando o cliente envia um comando para o servidor, ele envia este comando com o flag PSH e espera pela resposta do servidor.
Já o bit URG (urgent mode) é utilizado para permitir que um nó informe para o nó destino que dados urgentes estão sendo enviados entre os dados enviados no segmento. Um exemplo de utilização deste flag é durante uma sessão FTP, quando o usuário aborta a conexão.
Resumindo: Usa-se o PSH para indicar q o receptor deve passar tudo o q tem no buffer para a aplicação; e o URG para indicar q um determinado segmento deve ser encaminhado imediatamente à aplicação, mesmo q haja outros segmentos à espera no buffer.
Por exemplo, no caso do ftp(ou FDP, a depender da raiva!!!), o usuario envia uma serie de dados e estes encontram-se no buffer...só q o usuario resolve sair pra fumar um cigarro(ou qqr outra coisa por designio da sua imaginação) e aborta a transferencia...para q o buffer não fique com dados inuteis, um segmento com o URG ativado é enviado ao receptor.
Referencias:
[1] https://www.ic.unicamp.br/~nfonseca/arquivos/faq.html
Flags TCP:
- URG: traz o pacote para o primeiro lugar na fila do buffer (informações urgentes);
- ACK: confirma o recebimento de algum segmento;
- PSH: envia o dado para a camada seguintes sem precisar esperar encher o buffer;
- RST: reinicia a conexão;
- SYN: requisita o início de uma nova conexão;
- FIN: requisita o encerramento de uma conexão.