Estou tentando entender a diferença entre os sinalizadores TCP PSH e URG. Até agora eu sei que quando o sinalizador PSH é definido, o dispositivo receptor não espera até que o buffer esteja cheio - ele apenas envia os dados para o dispositivo.
Mas alguém pode me dar um exemplo real para que eu possa entender melhor o conceito?
eu estava passandohttps://packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/artigo e embora a explicação seja muito boa, não estou conseguindo entender o exemplo dado.
Diz,
No pacote #4, vemos que a solicitação HTTP inicial tem seu sinalizador PSH definido, indicando que o cliente não tem mais dados para adicionar e a solicitação deve ser enviada para o aplicativo (neste caso, um web daemon) imediatamente.
Se no caso acima o cliente não tiver mais dados para enviar, por que não enviaria apenas o pacote com o sinalizador FIN definido?
Responder1
O cliente não tem mais dadosagora mesmo, mas isso não significa que não terá nenhum no futuro.
Você está assumindo que o protocolo tem exatamente uma solicitação do cliente (e exatamente uma resposta). Há muito tempo que não acontecia com o HTTP – a reutilização de conexões para múltiplas solicitações existia mesmo antes do HTTP/1.1 e é onipresente hoje em dia. O cliente envia uma solicitação, aguarda resposta,em seguida, envia outra solicitaçãona mesma conexão, etc. A vantagem dessas conexões de longa duração é que elas permitem que o controle de fluxo TCP atinja o estado ideal.
Também não é o caso de muitos outros protocolos. Por exemplo, o SMTP troca pelo menos 5 comandos/respostas para enviar um e-mail, e a especificação do protocolo proíbe explicitamente o "pipelining" (enviar todos os comandos de uma vez sem esperar pela resposta). Isso significa que um cliente precisa enviar uma única linha e fazer com que o servidor responda, enviar outra linha e fazer com que o servidor responda, etc.
E, claro, muitos protocolos sãointerativo– Telnet e SSH exigem que o servidor responda a cada pressionamento de tecla; VNC e RDP reagem a cada clique do mouse.