Ich versuche, den Unterschied zwischen den TCP PSH- und URG-Flags zu verstehen. Ich weiß bisher, dass das Empfängergerät bei gesetztem PSH-Flag nicht wartet, bis der Puffer voll ist – es sendet die Daten einfach an das Gerät.
Aber kann mir jemand ein Beispiel aus der Praxis geben, damit ich das Konzept besser verstehe?
Ich ging durchhttps://packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/Artikel und obwohl die Erklärung sehr gut ist, verstehe ich das gegebene Beispiel nicht.
Es sagt,
In Paket Nr. 4 sehen wir, dass die ursprüngliche HTTP-Anforderung das PSH-Flag gesetzt hat, was bedeutet, dass der Client keine weiteren Daten hinzuzufügen hat und die Anforderung sofort an die Anwendung (in diesem Fall einen Web-Daemon) gesendet werden soll.
Wenn der Client im obigen Fall keine weiteren Daten zu senden hat, warum sendet er das Paket dann nicht einfach mit gesetztem FIN-Flag?
Antwort1
Der Kunde hat keine weiteren Datenim Augenblick, aber das heißt nicht, dass es in Zukunft keine geben wird.
Sie gehen davon aus, dass das Protokoll genau eine Anfrage vom Client hat (und genau eine Antwort). Das ist bei HTTP schon sehr lange nicht mehr der Fall – die Wiederverwendung von Verbindungen für mehrere Anfragen gab es schon vor HTTP/1.1 und ist heute allgegenwärtig. Der Client sendet eine Anfrage, wartet auf eine Antwort,stellt dann eine weitere Anfrageüber dieselbe Verbindung usw. Der Vorteil dieser langlebigen Verbindungen besteht darin, dass die TCP-Flusssteuerung den optimalen Zustand erreichen kann.
Dies ist auch bei vielen anderen Protokollen nicht der Fall. Beispielsweise tauscht SMTP nicht weniger als 5 Befehle/Antworten aus, um eine E-Mail zu senden, und die Protokollspezifikation verbietet ausdrücklich „Pipelining“ (das Senden aller Befehle auf einmal, ohne auf eine Antwort zu warten). Dies bedeutet, dass ein Client eine einzelne Zeile pushen muss und der Server antwortet, eine weitere Zeile pushen muss und der Server antwortet usw.
Und natürlich sind viele Protokolleinteraktiv– Telnet und SSH erfordern, dass der Server auf jeden Tastendruck reagiert; VNC und RDP reagieren auf jeden Mausklick.