Perché una richiesta POST utilizza il flag PSH nel primo pacchetto?


0

Sto cercando di capire il comportamento della transazione HTTP POST. Quando esiste una richiesta GET con un URI lungo che richiede l'invio di più di un pacchetto, il flag PSH viene utilizzato nell'ultimo pacchetto per indicare al server che i dati devono essere inviati immediatamente all'applicazione ricevente.

Tuttavia, su una richiesta POST, caricando un'immagine su imgur (ad es.), Il flag PSH è presente in ogni singolo pezzo di payload fino al termine. Penso, correggimi se sbaglio, questo comportamento è solo perché ogni blocco della transazione è grande e deve essere inviato agli strati superiori il più velocemente possibile per evitare un enorme buffer e che questo comportamento viene utilizzato in tempo reale e applicazioni interattive. Ma è uno standard? Questo comportamento è prevedibile in ogni singola richiesta POST?

Grazie in anticipo


PSH chiede al client TCP di inviare immediatamente la comunicazione e, sul ricevitore, di svuotare il buffer e informare l'applicazione che ci sono dati in attesa di esso, piuttosto che attendere i thread delle applicazioni per verificare la presenza di dati nel buffer.
Frank Thomas,

Risposte:


6

"Penso ... questo comportamento è solo perché ogni blocco della transazione è grande e deve essere inviato agli strati superiori il più velocemente possibile per evitare un enorme buffer e che questo comportamento viene utilizzato in applicazioni interattive in tempo reale"

Il comportamento che descrivi è determinato dal client di invio (software). Un malinteso comune sulle implementazioni TCP e UDP è che esiste un solo modo per codificare, ma ci sono scelte da fare durante la codifica ... e non tutti i programmatori fanno le stesse scelte. Gli RFC sono tuoi amici.

http://www.freesoft.org/CIE/RFC/1122/88.htm "Quando un'applicazione emette una serie di chiamate SEND senza impostare il flag PUSH, il TCP può aggregare i dati internamente senza inviarli. Allo stesso modo, quando un una serie di segmenti viene ricevuta senza il bit PSH, un TCP MAY può mettere in coda i dati internamente senza passarli all'applicazione ricevente. "

Il MAGGIO in quella frase offre al programmatore (del client mittente) la scelta se impostare o meno il bit PSH. Nel caso che descrivi, il programmatore ha scelto di dare la priorità all'invio del payload dello stack all'applicazione rispetto al buffering di una serie di essi per inviare lo stack in una sola volta.

Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.