2010-01-29 13 views
6

동일한 서버에 여러 HTTP 가져 오기 요청을 만들고 각각에 HTTP 200 OK 응답을받는 경우 Wireshark를 사용하여 어떤 요청에 어떤 요청 맵핑이 매핑되는지 어떻게 알 수 있습니까?HTTP 요청을 HTTP 응답에 매핑

현재 HTTP 요청이 만들어진 것처럼 보이며 다음 HTTP 200 OK 응답이 신속하게 수신되므로 모든 것이 올바른 순서로 이루어집니다. 그러나 나는 반대로 사물을 보았다. 예를 들어 Google Maps API v2를 사용하여 위치 정보에 대한 여러 요청을 한 다음 정보를 임의의 순서로 수신합니다 (요청한 순서와 비슷하지만 반드시 완벽하지는 않습니다.)

직감은 대부분의 시간에 응답을받을지라도 내 응답이 특정 순서대로 수신된다고 가정 할 수는 없습니다. 그래서 나는 응답에서이 순서를 어떻게 결정할 수 있는지 궁금합니다.

업데이트 : 필요한 부분을 명확히 설명합니다. 서버가 요청을 받았음을 알 필요가 있습니다. 시퀀스 번호와 심지어 ACK를보고이를 수행해야 할 필요가있는 것 같습니다. 이 접근 방식의 추론은 기본적으로 웹 앱을 관찰하고 정보를 전송하는지 확인하고 정보가 수신되고 있음을 확인하는 것입니다.

업데이트 : 이것은 특별히 wireshark와는 아무런 관련이 없습니다. 혼란 스럽기 때문에 제목에서 제거합니다. TCP/IP 프로토콜의 최상위에있는 HTTP 프로토콜과 요청에 대한 응답을 매핑하는 방법과 관련이 있습니다.

감사합니다.

답변

3

응용 프로그램 계층에서 HTTP 프로토콜이이 기능을 제공하지 않는 것 같아서이를 확인하기 위해 전송 계층으로 이동해야합니다. 제 경우에는 시퀀스 번호를 사용하는 TCP/IP 계층입니다.

HTTP는 신뢰할 수있는 것으로 가정합니다.
전송; 그러한 보증을 제공하는 모든 프로토콜을 사용할 수 있습니다. 해당 프로토콜 의 전송 데이터 단위에 HTTP/1.1 요청 및 응답 구조를 매핑하는 것은 의 범위를 벗어납니다.

더 읽기 : http://www.faqs.org/rfcs/rfc2616.html#ixzz0e20kxKcz

12

당신이 정지 한 후 캡처 패킷이 단계를 수행 :

  • 메뉴를 엽니 다

  • 분석 GET 요청에

    1. 위치에 커서를

    2. 클릭 TCP 스트림 "

    요청 및 응답이 순서대로 표시되는 새 창이 나타납니다.

    +0

    이것은 Wireshark를 효과적으로 사용하는 데 매우 유용한 정보이지만 답변과는 다른 것을 찾고 있습니다. –

    +4

    사실, 이것이 답이되어야합니다. TCP 스트림보기에서 요청/응답의 정확한 순서를 볼 수 있습니다. –

    2

    내가 완전히 다른 질문에 대한 인터넷 검색 동안 Fiddler2

    +2

    Fiddler2 대신 Wireshark를 사용하는 데는 아무런 문제가 없습니다. –

    +0

    Wireshark가 gzip/delfate의 압축을 풀지 않습니다. 또한 전송 덩어리 인코딩 프로토콜을 본문에서 제거하지 않습니다. – Zombies

    +0

    또한 Fiddler는 Windows에서만 사용할 수 있습니다. – kramer65

    5

    으로 이러한 HTTP 디버거를 사용, 디버그 HTTP에 Wireshark를 사용하지 마십시오, 나는이 일을보고 난 더 완전한 해답을 제공 할 수 있다고 생각 :

    HTTP 당신이보고해야한다 주어진 시간에 하나의 TCP 연결에서 찾고 있다면 응답, 따라서 그들이 요청 된 순서대로 도착해야한다는 것을 지시 :

    요청; 응답; 요청; 응답 ...

    또한 HTTP/1.1에서는 클라이언트가 다음 요청을 보내기 위해 응답을 기다릴 필요가없는 "파이프 라인"에 대한 지원이 있습니다. 이러한 경우에 관찰 할 수있는 것은 다음과 같습니다.

    요청; 응답; 요청; 요청; 응답; 응답; 요청; 응답

    HTTP 응답 자체에는이를 트리거 한 특정 요청에 대한 참조가 없습니다.

    단일 TCP 연결을 디버깅/관찰 할 때 Filipo의 제안이 고전적이지만 여러 TCP 연결을 관찰 할 때 TCP 연결 스트림을 클릭 할 수 없습니다. 각 연결에 대해 TCP 연결을 수행해야하기 때문입니다.

    많은 TCP 연결과 많은 요청/응답이있는 경우 요청 패킷의 TCP 소스 포트와 각 TCP 연결과 관련된 응답을 알기위한 응답 패킷의 TCP dest 포트를 살펴 봐야합니다. 그런 다음 HTTP 요청/응답 순서 규칙을 적용하십시오.

    또한 Wireshark CAN은 응답 본문을 압축 해제하며 모든 응답 본문이 도착하면 자동으로 처리하지만 TCP 스트림을 따르지는 않습니다.

    항상 HTTP를 디버깅 할 때 Wireshark를 사용합니다.

    +0

    멀티 스레드 환경에서는 그렇지 않습니다. –

    관련 문제