Frage

Wenn ich mehrere HTTP -Anfragen an denselben Server erstelle und auf jede HTTP 200 -OK -Antworten auf jede einzelne bekomme, wie kann ich mit der Antwort mit Wireshark mitteilen, welche Anforderung auf welche Antwort karten?

Derzeit sieht es so aus, als ob eine HTTP -Anfrage gestellt wird und die nächste HTTP 200 -OK -Antwort schnell empfangen wird, sodass alles in der richtigen Reihenfolge ist. Ich habe jedoch das Gegenteil gesehen. Beispielsweise habe ich die Google Maps API V2 unter Verwendung von Standortinformationen aufgenommen und dann werden die Informationen in einer willkürlichen Reihenfolge empfangen (ähnlich der Reihenfolge, in der ich sie angefordert habe, aber nicht unbedingt perfekt ist.)

Meine Intuition ist also, dass ich nicht davon ausgehen kann, dass meine Antworten in einer bestimmten Reihenfolge eingegangen sind, auch wenn sie die meiste Zeit in Ordnung sind. Ich frage mich also, wie ich diese Reihenfolge aus der Antwort bestimmen kann.

UPDATE: Klarstellung, was ich brauche. Ich muss nur wissen, dass der Server die Anfrage erhalten hat. Es scheint, als müsste ich dies tun, indem ich Sequenznummern und vielleicht sogar ACKs betrachte. Die Begründung für diesen Ansatz ist, dass ich im Grunde genommen eine Web -App beobachte und überprüft, ob die Informationen gesendet werden und die Informationen empfangen werden.

UPDATE: Dies hat nichts mit Wireshark zu tun. Ich glaube, es ist verwirrend, also entferte ich es aus dem Titel. Es hat mit dem HTTP -Protokoll über dem TCP/IP -Protokoll zu tun und wie wir Antworten auf Anfragen zuordnen.

Vielen Dank.

War es hilfreich?

Lösung 3

Es scheint, als würde diese Fähigkeit das HTTP -Protokoll in der Anwendungsschicht nicht bereitstellen, daher muss ich in die Transportschicht gehen, um dies zu bestimmen. In meinem Fall die TCP/IP -Schicht unter Verwendung von Sequenznummern.

Http nimmt nur eine zuverlässige voraus
Transport; Jedes Protokoll, das solche Garantien bereitstellt, kann verwendet werden. Die Zuordnung der HTTP/1.1 -Anforderung und Antwortstrukturen auf die
Transportdateneinheiten des fraglichen Protokolls liegen außerhalb des Rahmens dieser Spezifikation.

Weiterlesen: http://www.faqs.org/rfcs/rfc2616.html#ixzz0e20kxkcz

Andere Tipps

Nachdem Sie aufgehört haben, Pakete zu erfassen, folgen Sie folgenden Schritten:

  1. Positionieren Sie den Cursor auf eine Get -Anfrage

  2. Öffnen Sie das Menü Analyse

  3. Klicken Sie auf "TCP -Stream befolgen".

Sie erhalten ein neues Fenster mit Anfragen und Antworten nacheinander.

Während ich nach einer völlig anderen Frage gegoogelte, habe ich diesen gesehen und ich denke, ich kann eine vollständigere Antwort geben:

HTTP schreibt vor, dass die Antworten in der Reihenfolge eintreffen müssen, die sie angefordert haben. Wenn Sie sich daher zu einem bestimmten Zeitpunkt eine einzige TCP -Verbindung ansehen, sollten Sie sehen:

Anfrage ; Antwort ; Anfrage ; Antwort ...

Ebenfalls in HTTP/1.1 gibt es Unterstützung für "Pipeline", bei der der Kunde nicht warten muss, bis die Antworten eintreffen, um die nächste Anfrage auszustellen. Was in solchen Fällen beobachtet werden könnte, ist:

Anfrage ; Antwort ; Anfrage ; Anfrage ; Antwort ; Antwort ; Anfrage ; Antwort

In der HTTP -Antwort selbst gibt es keinen Hinweis auf die spezifische Anforderung, die sie ausgelöst hat.

Der Vorschlag von Filipo ist klassisch beim Debugieren / Beobachten einer einzelnen TCP -Verbindung. Wenn Sie jedoch mehrere TCP -Verbindungen beobachten, können Sie nicht auf den TCP -Stream folgen, da Sie dies für jede Verbindung tun müssen.

Wenn Sie viele TCP -Verbindungen und viele Anfragen/Antworten haben, müssen Sie sich den TCP -Quellport im Anforderungspaket und den TCP -Dest -Port im Antwortpaket ansehen, um zu wissen, welche Antwort mit jeder TCP -Verbindung zusammenhängt, und wenden Sie dann das an, und wenden Sie dann die an, um die Antwort anzuwenden, und wenden Sie dann die an, und wenden Sie dann an HTTP -Anforderungs-/Antwortauftragsregeln.

Außerdem kann Wireshark den Reaktionskörper dekomprimieren, und es wird automatisch tun, wenn der gesamte Reaktionskörper angekommen ist, aber es wird nicht im folgenden TCP -Stream geschehen.

Ich benutze Wireshark immer, um HTTP zu debuggen.

Verwenden Sie keine Wireshark, um HTTP zu debuggen. Verwenden Sie einen HTTP -Debugger wie Fiddler2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top