将HTTP请求映射到HTTP响应

时间:2010-01-29 17:10:22

标签: http tcp wireshark

如果我向同一服务器发出多个HTTP Get请求并获得每个HTTP 200 OK响应,如何使用Wireshark告诉哪个请求映射到哪个响应?

目前它看起来像是一个http请求,并且很快收到下一个HTTP 200 OK响应,所以一切都按照正确的顺序进行。然而,我已经看到了相反的事情。例如,使用谷歌地图API v2我已经提出了几个位置信息请求,然后以任意顺序接收信息(非常类似于我请求它的顺序,但不一定完美。)

所以我的直觉是我无法假设我的回复将按特定顺序收到,即使它们大部分时间都可以按顺序排列。所以我想知道如何从响应中确定这个顺序。

更新:澄清我需要什么。我只需要知道服务器已收到请求。看起来我需要通过查看序列号甚至ACKS来做到这一点。这种方法背后的原因是我基本上是观察一个网络应用程序并检查它是否正在发送信息并且正在接收信息。

更新:这与wireshark没有任何关系。我相信这让人很困惑,所以我把它从标题中删除了。它与TCP / IP协议之上的HTTP协议以及我们如何映射对请求的响应有关。

感谢。

4 个答案:

答案 0 :(得分:13)

停止捕获数据包后,请按照以下步骤操作:

  1. 将光标放在GET请求上

  2. 打开“分析”菜单

  3. 点击“关注TCP流”

  4. 您将获得一个包含请求和响应的新窗口。

答案 1 :(得分:5)

当我在Google上搜索一个完全不同的问题时,我看到了这个问题,我想我可以提供更完整的答案:

HTTP规定响应必须按照请求的顺序到达。因此,如果您在给定时间查看单个TCP连接,您应该看到:

要求;回应;要求;回应......

同样在HTTP / 1.1中,支持“管道”,其中客户端不必等待响应到达以发出下一个请求。在这种情况下可以观察到的是:

要求;回应;要求;要求;回应;回应;要求;响应

在HTTP响应本身中,没有引用触发它的特定请求。

在调试/观察单个TCP连接时,Filipo的建议是经典的,但是,当观察多个TCP连接时,您无法单击跟随TCP流,因为您必须为每个连接执行此操作。

如果您有许多TCP连接和许多请求/响应,则必须查看请求数据包中的TCP源端口,以及响应数据包中的TCP目标端口,以了解哪个响应与每个tcp连接相关,以及然后应用HTTP请求/响应顺序规则。

此外,Wireshark CAN解压缩响应主体,如果所有响应主体都已到达,它将自动执行此操作,但不会在Follow TCP Stream中执行此操作。

我总是使用Wireshark来调试HTTP。

答案 2 :(得分:3)

似乎这种能力不是由应用层的HTTP协议提供的,所以我必须转到传输层来确定这一点。就我而言,TCP / IP层使用序列号。

  

HTTP只假定可靠的   运输;任何提供的协议   可以使用这种保证;该   HTTP / 1.1请求的映射和   响应结构   协议的传输数据单元   有问题超出了范围   这个规范。

     

了解更多:   http://www.faqs.org/rfcs/rfc2616.html#ixzz0e20kxKcz

答案 3 :(得分:2)

不要使用Wireshark来调试HTTP,请使用HTTP调试器,例如Fiddler2