Warum verwendet eine POST-Anfrage das PSH-Flag im ersten Paket?

Warum verwendet eine POST-Anfrage das PSH-Flag im ersten Paket?

Ich versuche, das Verhalten der POST-HTTP-Transaktion zu verstehen. Wenn eine GET-Anforderung mit einer langen URI vorliegt, für die mehr als ein Paket gesendet werden muss, wird das PSH-Flag im letzten Paket verwendet, um dem Server mitzuteilen, dass die Daten sofort an die empfangende Anwendung gesendet werden müssen.

Bei einer POST-Anfrage, beispielsweise beim Hochladen eines Bilds zu imgur, ist das PSH-Flag jedoch in jedem einzelnen Teil der Nutzlast vorhanden, bis dieser abgeschlossen ist. Ich denke – korrigieren Sie mich, wenn ich falsch liege –, dass dieses Verhalten nur deshalb besteht, weil jeder Teil der Transaktion groß ist und so schnell wie möglich an die oberen Schichten gesendet werden muss, um einen riesigen Puffer zu vermeiden, und weil dieses Verhalten in Echtzeit- und interaktiven Anwendungen verwendet wird. Aber ist das ein Standard? Ist dieses Verhalten in jeder einzelnen POST-Anfrage zu erwarten?

Dank im Voraus

Antwort1

„Ich denke, … dieses Verhalten liegt einfach daran, dass jeder Teil der Transaktion groß ist und so schnell wie möglich an die oberen Schichten gesendet werden muss, um einen riesigen Puffer zu vermeiden, und dass dieses Verhalten in Echtzeit- und interaktiven Anwendungen verwendet wird.“

Das von Ihnen beschriebene Verhalten wird vom sendenden Client (der Software) bestimmt. Ein weit verbreitetes Missverständnis über TCP- und UDP-Implementierungen ist, dass es nur eine Möglichkeit zum Codieren gibt, aber beim Codieren müssen Entscheidungen getroffen werden ... und nicht alle Programmierer treffen die gleichen Entscheidungen. Die RFCs sind Ihr Freund.

http://www.freesoft.org/CIE/RFC/1122/88.htm „Wenn eine Anwendung eine Reihe von SEND-Aufrufen ausgibt, ohne das PUSH-Flag zu setzen, KANN das TCP die Daten intern aggregieren, ohne sie zu senden. Ebenso KANN ein TCP, wenn eine Reihe von Segmenten ohne das PSH-Bit empfangen wird, die Daten intern in die Warteschlange stellen, ohne sie an die empfangende Anwendung weiterzuleiten.“

DerMAIin diesem Satz bietet der Programmierer (des sendenden Clients) die Wahl, ob er das PSH-Bit setzen möchte oder nicht. In dem von Ihnen beschriebenen Fall hat der Programmierer entschieden, dem Senden der Nutzdaten im Stapel an die Anwendung Vorrang einzuräumen, anstatt eine Reihe davon zu puffern, um sie auf einmal im Stapel zu senden.

Hoffentlich hilft das.

verwandte Informationen