Warum betrachten einige PCs die PSH-Flagge und andere nicht?

645
TimVK

Beim Stack-Überlauf stellte ich eine Frage zum Programmieren um TCP und zum Lesen des TCP-Streams. Jetzt habe ich die Lösung gefunden. Nämlich das PSH-Flag von TCP-Headern, das tatsächlich gesetzt werden muss. Aber jetzt ist es nicht eingestellt.
Meine Frage dazu lautet: Warum haben einige PCs eine schnelle TCP-Geschwindigkeit mit Geräten, für die das PSH-Flag nicht gesetzt ist, und einige PCs sind langsam? Bei den PCs sind wir auf die Unterschiede zwischen Windows 7 (32 und 64 Bit) aufmerksam geworden, so dass es sich, soweit ich das sehe, nicht auf das Betriebssystem beziehen kann. Kann mir jemand mehr zu diesem Thema erklären?

1

1 Antwort auf die Frage

1
RedGrittyBrick

Das Push-Flag verringert Ihre Durchsatzeffizienz, um die Latenz ein wenig zu reduzieren. Es wird verwendet, um zu signalisieren, dass keine weiteren Daten folgen sollen, sodass Puffer geleert und Daten an die App des anderen Endes weitergeleitet werden können, ohne auf weitere Daten warten zu müssen. Die Verwendung des PSH-Flags wird vom Datenkommunikationsprotokoll bestimmt (nicht von der Geräte-, Betriebssystem- oder Endbenutzerkonfiguration).

Siehe diesen Artikel


Die Gründe, warum ein PC schneller ist als ein anderer, sind Legion. Ich nehme an, Sie müssten sorgfältig testen und weitere Details angeben, um nützliche Hilfe zu erhalten.

Was kann ich testen, um herauszufinden, was das Problem ist? Und welche Details helfen Ihnen dabei? Ich habe an Treiber und / oder Hardware gedacht, die diese Nachrichten anders verarbeitet. TimVK vor 11 Jahren 0
@ TimVK: Ich würde erwarten, dass die Behandlung des TCP-PSH-Flags im TCP / IP-Stack-Code des Betriebssystems erfolgt, nicht in Ethernet-Gerätetreibern oder in Hardware. Dieses Kommentarfeld ist zu klein, um Ihre Folgefragen zu beantworten. RedGrittyBrick vor 11 Jahren 0
In der Tat haben Sie recht mit dem Umgang mit TCP-Flags. Das war nur das erste, woran ich gedacht hatte, ohne zweimal darüber nachzudenken. TimVK vor 11 Jahren 0