2010-01-29 23 views
6

Si realizo varias solicitudes de obtención de HTTP en el mismo servidor y obtengo respuestas HTTP 200 correctas a cada una de ellas, ¿cómo puedo saber a qué solicitud corresponde cada respuesta utilizando Wireshark?Asignación de solicitudes HTTP a respuestas HTTP

Actualmente parece que se realiza una solicitud http, y la próxima respuesta HTTP 200 OK se recibe rápidamente para que todo esté en la secuencia correcta. Sin embargo, he visto cosas en sentido contrario. Por ejemplo, utilizando la API v2 de Google Maps, realicé varias solicitudes de información de ubicación y luego la información se recibió en un orden arbitrario (muy parecido al pedido en el que lo solicité, pero no necesariamente perfecto).

Así que mi La intuición es que no puedo suponer que mis respuestas se recibirán en un orden específico, aunque puedan estar en orden la mayor parte del tiempo. Entonces me pregunto cómo puedo determinar este orden a partir de la respuesta.

Actualización: Aclaración sobre lo que necesito. Solo necesito saber que el servidor ha recibido la solicitud. Parece que tengo que hacer esto mirando los números de secuencia y quizás incluso ACKS. El razonamiento detrás de este enfoque es que básicamente estoy observando una aplicación web y comprobando que está enviando la información y que se está recibiendo la información.

Actualización: Esto no tiene nada que ver con wireshark específicamente. Creo que está confundiendo a la gente, así que la eliminé del título. Tiene que ver con el protocolo HTTP sobre el protocolo TCP/IP y cómo mapeamos las respuestas a las solicitudes.

Gracias.

Respuesta

3

Parece que el protocolo HTTP no proporciona esta capacidad en la capa de aplicación, así que debo bajar a la capa de transporte para determinar esto. En mi caso, la capa TCP/IP usa números de secuencia.

HTTP solo supone un confiable
transporte; cualquier protocolo que proporcione tales garantías se puede utilizar; el mapeo de la solicitud HTTP/1.1 y las estructuras de respuesta en las unidades de datos de transporte
del protocolo en cuestión está fuera del alcance de esta especificación.

Leer más: http://www.faqs.org/rfcs/rfc2616.html#ixzz0e20kxKcz

12

Después de haber dejado de capturar paquetes seguir los siguientes pasos:

  1. posicionar el cursor en una petición GET

  2. Abrir el menú Analizar

  3. haga clic en "Seguir Transmisión TCP "

Aparecerá una nueva ventana con solicitudes y respuestas en secuencia.

+0

Esta es una muy buena información para usar Wireshark con eficacia, pero estoy buscando algo diferente como respuesta. –

+4

En realidad, esta debería ser la respuesta. En la vista de transmisión de tcp, puede ver la secuencia exacta de solicitud/respuesta. –

2

No utilice Wireshark para HTTP de depuración, utilice un depurador de HTTP como Fiddler2

+2

No hay nada malo con el uso de Wireshark en lugar de Fiddler2, especialmente si tienes más experiencia con él. –

+0

Wireshark no descomprime gzip/delfate para usted. Y tampoco elimina el protocolo de codificación del fragmento de transferencia del cuerpo. – Zombies

+0

Además, Fiddler solo está disponible para Windows. – kramer65

5

Mientras estaba buscando en Google por una cuestión totalmente diferente, vi éste y creo que puedo dar una respuesta más completa:

HTTP dicta que las respuestas deben llegar en el orden en que fueron solicitados, por lo tanto, si usted está buscando en una única conexión TCP en un momento dado se debe ver:

Solicitud; Respuesta; Solicitud ; Respuesta ...

También en HTTP/1.1, hay soporte para "Pipeline" donde el cliente no tiene que esperar que lleguen las respuestas para emitir la próxima solicitud. Lo que se puede observar en tales casos es:

Solicitud; Respuesta; Solicitud ; Solicitud ; Respuesta; Respuesta; Solicitud ; Respuesta

En la respuesta HTTP en sí, no hay ninguna referencia a la solicitud específica que la activó.

La sugerencia de Filipo es clásica al depurar/observar una única conexión TCP, pero, al observar múltiples conexiones TCP, no puede hacer clic en Seguir secuencia de TCP porque tendría que hacerlo para cada conexión.

Si tiene muchas conexiones TCP y muchas solicitudes/respuestas, tendrá que mirar el puerto de origen TCP en el paquete de solicitud y el puerto de destino TCP en el paquete de respuesta para saber qué respuesta está relacionada con cada conexión de tcp. y luego aplicar las reglas de solicitud/respuesta HTTP.

Además, Wireshark PUEDE descomprimir el cuerpo de la respuesta, y lo hará automáticamente si todo el cuerpo de la respuesta ha llegado, pero NO lo hará en el seguimiento de la secuencia TCP.

Siempre uso Wireshark para depurar HTTP.

+0

, este no será el caso para entornos de múltiples hilos. –

Cuestiones relacionadas