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

0

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

No entanto, em uma solicitação POST, fazendo upload de uma imagem para imgur (por exemplo), o sinalizador PSH está presente em cada bloco de carga até que seja concluído. Eu acho que, corrija-me se eu estiver errado, esse comportamento é 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 tempo real e aplicativos interativos. Mas isso é um padrão? Esse comportamento é esperado em cada solicitação POST?

Obrigado antecipadamente

    
por Carlos Vega 15.09.2015 / 15:51

1 resposta

5

"Eu acho ... esse comportamento é 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 interativo aplicações "

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

link "Quando um aplicativo emite uma série de chamadas SEND sem definir o flag PUSH, o TCP MAY agrega os dados internamente sem enviá-los. Da mesma forma, quando uma série de segmentos é recebida sem o bit PSH, um TCP MAY enfileira os dados internamente sem passar para o aplicativo de recepção. "

O MAIO nessa frase oferece ao programador (do cliente de envio) a escolha de definir ou não o bit PSH. No caso que você descreve, o programador escolheu priorizar o envio da carga para a aplicação por meio do buffer de uma série deles para enviar a pilha de uma só vez.

Espero que ajude.

    
por 15.09.2015 / 16:09