2010-01-29 34 views
6

Nếu tôi thực hiện nhiều HTTP Nhận yêu cầu cho cùng một máy chủ và nhận phản hồi HTTP 200 OK cho mỗi máy chủ, làm thế nào để tôi yêu cầu bản đồ yêu cầu phản hồi bằng Wireshark?Ánh xạ các yêu cầu HTTP tới các câu trả lời HTTP

Hiện tại có vẻ như một yêu cầu http được thực hiện và phản hồi HTTP 200 OK tiếp theo nhanh chóng nhận được vì vậy mọi thứ đều theo đúng trình tự. Tôi đã thấy những điều trái ngược tuy nhiên. Ví dụ bằng cách sử dụng API Google Maps v2, tôi đã thực hiện một số yêu cầu cho thông tin vị trí và sau đó thông tin được nhận theo thứ tự tùy ý (gần giống với thứ tự mà tôi đã yêu cầu, nhưng không nhất thiết phải hoàn hảo.)

Vì vậy, trực giác là tôi không thể giả định rằng câu trả lời của tôi sẽ được nhận theo một thứ tự cụ thể, mặc dù chúng có thể theo thứ tự hầu hết thời gian. Vì vậy, tôi tự hỏi làm thế nào tôi có thể xác định thứ tự này từ phản ứng.

Cập nhật: Làm rõ những gì tôi cần. Tôi chỉ cần biết rằng máy chủ đã nhận được yêu cầu. Có vẻ như tôi cần phải làm điều này bằng cách nhìn vào số thứ tự và thậm chí là ACKS. Lý do đằng sau phương pháp này là về cơ bản tôi đang quan sát một ứng dụng web và kiểm tra nó đang gửi thông tin và thông tin đang được nhận.

Cập nhật: Điều này không liên quan gì đến công cụ đặc biệt. Tôi tin rằng nó là người khó hiểu vì vậy tôi loại bỏ nó khỏi danh hiệu. Nó phải làm với giao thức HTTP trên giao thức TCP/IP và cách chúng ta ánh xạ các phản hồi cho các yêu cầu.

Cảm ơn.

Trả lời

3

Dường như khả năng này không được cung cấp bởi giao thức HTTP ở lớp ứng dụng vì vậy tôi phải đi xuống tầng giao thông để xác định điều này. Trong trường hợp của tôi, lớp TCP/IP sử dụng số thứ tự.

HTTP chỉ giả định phương thức vận chuyển đáng tin cậy
; bất kỳ giao thức nào cung cấp đảm bảo như vậy có thể được sử dụng; ánh xạ của yêu cầu HTTP/1.1 và cấu trúc phản hồi trên các đơn vị dữ liệu vận chuyển
của giao thức được đề cập nằm ngoài phạm vi của đặc điểm kỹ thuật này.

Read more: http://www.faqs.org/rfcs/rfc2616.html#ixzz0e20kxKcz

12

Sau khi bạn đã ngừng các gói chụp theo các bước này:

  1. vị trí con trỏ trên một yêu cầu GET

  2. mở menu Analyze

  3. nhấp vào "Theo dõi Luồng TCP "

Bạn nhận được cửa sổ mới có yêu cầu và phản hồi theo thứ tự.

+0

Đây là thông tin rất tốt để sử dụng Wireshark hiệu quả, nhưng tôi đang tìm kiếm một thứ gì đó khác biệt như một câu trả lời. –

+4

Thực ra, đây là câu trả lời. Trong chế độ xem luồng tcp, bạn có thể xem chuỗi yêu cầu/phản hồi chính xác. –

2

Không sử dụng Wireshark để gỡ lỗi HTTP, sử dụng một trình gỡ lỗi HTTP như Fiddler2

+2

Không có gì sai khi sử dụng Wireshark thay vì Fiddler2 đặc biệt nếu bạn có nhiều kinh nghiệm hơn với nó. –

+0

Wireshark không giải nén gzip/delfate cho bạn. Và nó cũng không loại bỏ giao thức mã hóa truyền dữ liệu từ cơ thể. – Zombies

+0

Ngoài ra, Fiddler chỉ khả dụng cho Windows. – kramer65

5

Trong khi tôi đang googling cho một câu hỏi hoàn toàn khác nhau, tôi thấy được việc này và tôi nghĩ rằng tôi có thể cung cấp một câu trả lời hoàn chỉnh hơn:

HTTP ra lệnh rằng câu trả lời phải đến theo thứ tự được yêu cầu, Do đó, nếu bạn đang xem một kết nối TCP tại một thời điểm cụ thể, bạn sẽ thấy:

Yêu cầu; Phản ứng ; Yêu cầu ; Trả lời ...

Cũng trong HTTP/1.1, có hỗ trợ cho "Đường ống" nơi khách hàng không phải chờ phản hồi để đến để đưa ra yêu cầu tiếp theo. Những gì có thể được quan sát trong trường hợp này là:

Yêu cầu; Phản ứng ; Yêu cầu ; Yêu cầu ; Phản ứng ; Phản ứng ; Yêu cầu ; Phản hồi

Trong chính phản hồi HTTP, không có tham chiếu đến yêu cầu cụ thể đã kích hoạt nó.

Đề xuất của Filipo là cổ điển khi gỡ lỗi/quan sát một kết nối TCP, nhưng khi quan sát nhiều kết nối TCP, bạn không thể nhấp vào theo dõi TCP Stream vì bạn phải thực hiện nó cho mỗi kết nối.

Nếu bạn có nhiều kết nối TCP và nhiều yêu cầu/phản hồi, bạn sẽ phải xem cổng nguồn TCP trong gói yêu cầu và cổng đích TCP trong gói phản hồi để biết phản hồi nào liên quan đến mỗi kết nối tcp, và sau đó áp dụng các quy tắc yêu cầu/phản hồi HTTP.

Ngoài ra, Wireshark CÓ THỂ giải nén phần thân phản hồi, và nó sẽ tự động thực hiện nếu tất cả nội dung phản hồi đã đến, nhưng nó sẽ KHÔNG làm như vậy trong Theo dõi luồng TCP.

Tôi luôn sử dụng Wireshark để gỡ lỗi HTTP.

+0

điều này sẽ không phải là trường hợp cho môi trường đa luồng. –

Các vấn đề liên quan