Por que uma solicitação POST usa o sinalizador PSH no primeiro pacote?

Por que uma solicitação POST usa o sinalizador PSH no primeiro pacote?

Estou tentando entender o comportamento da transação POST HTTP. Quando há uma solicitação GET com um URI longo que precisa do envio de mais de um pacote, o sinalizador PSH é usado no último pacote para informar ao servidor que os dados devem ser enviados imediatamente para o aplicativo receptor.

No entanto, em uma solicitação POST, carregando uma imagem para imgur (por exemplo), o sinalizador PSH está presente em cada pedaço da carga útil até terminar. Eu acho que, corrija-me se estiver errado, esse comportamento ocorre apenas porque cada pedaço da transação é grande e deve ser enviado para as camadas superiores o mais rápido possível para evitar um buffer enorme e esse comportamento é usado em tempo real e aplicativos interativos. Mas, isso é um padrão? Esse comportamento é esperado em cada solicitação POST?

desde já, obrigado

Responder1

"Eu acho que... esse comportamento ocorre apenas porque cada pedaço da transação é grande e deve ser enviado para as camadas superiores o mais rápido possível para evitar um buffer enorme e que esse comportamento é usado em aplicativos interativos e em tempo real"

O comportamento que você descreve é ​​determinado pelo cliente remetente (software). Um equívoco comum sobre implementações de TCP e UDP é que só existe uma maneira de codificar, mas há escolhas a serem feitas durante a codificação... e nem todos os programadores fazem as mesmas escolhas. Os RFCs são seus amigos.

http://www.freesoft.org/CIE/RFC/1122/88.htm "Quando um aplicativo emite uma série de chamadas SEND sem definir o sinalizador PUSH, o TCP PODE agregar os dados internamente sem enviá-los. Da mesma forma, quando uma série de segmentos é recebida sem o bit PSH, um TCP PODE enfileirar os dados internamente sem passar para o aplicativo receptor."

OPODERIAnessa frase oferece ao programador (do cliente remetente) a escolha de definir ou não o bit PSH. No caso que você descreve, o programador optou por priorizar o envio da carga útil para cima da pilha para o aplicativo, em vez de armazenar em buffer uma série deles para enviar a pilha de uma só vez.

Espero que ajude.

informação relacionada