Wireshark – was ist passiert?

Wireshark – was ist passiert?

Dieses Wireshark-Problem macht mich seit einigen Stunden verrückt. Was ist hier los?

192.168.2.100 ist ein Apache-Server, der eine statische Datei bereitstellt.

192.168.2.196 ist ein eingebetteter Client, der die Datei herunterlädt.

Es sieht so aus, als ob 192.168.2.196 die Datei fröhlich herunterlädt und dann einfach anfängt, 192.168.2.100 zu ignorieren, wodurch die Verbindung ins Stocken gerät und schließlich endet?

Ist dies richtig und warum könnte der Kunde dies tun?

Wireshark-Bild - hier klicken

Antwort1

Die Symptome weisen eindeutig darauf hin, dass auf der Clientseite ein Engpass bei der Empfangsverarbeitung vorliegt.

Die Ablaufverfolgung zeigt, dass sich der Empfangspuffer im Client-Netzwerkstapel (offenbar LwIP) füllt. Insbesondere wird die Fenstergröße in den Bestätigungen vom Client kleiner, wenn eine Reihe von Paketen vom Server empfangen werden, bis der Empfangspuffer vollständig gefüllt ist und ein „ZeroWindow“ vom Client an den Server gesendet wird, um ihn aufzufordern, das Senden von Daten zu beenden.

Dies weist normalerweise darauf hin, dass die Anwendung, die aus dem Socket liest, den Empfangspuffer nicht schnell genug leert, damit der Netzwerkstapel mit den ankommenden Paketen Schritt halten kann.

Die häufigen Neuübertragungen vom Server in Kombination mit verzögerten ACKs vom Client lassen darauf schließen, dass die Bedingungen auf dem Client sich auch negativ auf die Verarbeitung empfangener Pakete auf niedrigerer Ebene im Netzwerkstapel auswirken.

Sie haben erwähnt, dass der Client-Host ein eingebettetes Gerät ist, und außerdem angemerkt, dass Ihre App bei lwip_read() blockiert zu sein scheint. Die Wartezeit deutet darauf hin, dass ein anderer IO- oder CPU-Ressourcen- oder Planungsengpass Ihren Lese-Thread daran hindern könnte, genügend CPU-Zeit zu erhalten, um mit der Dateiübertragung Schritt zu halten. Die verzögerten ACKs deuten jedoch darauf hin, dass möglicherweise ein umfassenderes Problem vorliegt. Ohne mehr über das eingebettete Gerät zu wissen, ist eine weitere Fehlerbehebung schwierig.

LwIP hat auch spezielle Einschränkungen in Bezug auf die Bedienung von Netzwerkanrufen, die für Ihre Implementierung gelten könnten - Siehediese Seite mit den Fallstricken von LwIP.

Ich hoffe, diese Informationen sind hilfreich für die Lösung Ihres Problems.

verwandte Informationen