将HTTP请求映射到HTTP响应

将HTTP请求映射到HTTP响应,http,tcp,wireshark,Http,Tcp,Wireshark,如果我向同一台服务器发出多个HTTP Get请求,并向每个服务器获得HTTP 200 OK响应,那么如何使用Wireshark判断哪个请求映射到哪个响应 目前,它看起来像是发出了一个http请求,并且下一个http 200 OK响应被快速接收,因此所有内容都处于正确的顺序中。然而,我却看到了相反的情况。例如,使用Google Maps API v2,我多次请求位置信息,然后以任意顺序接收信息(与我请求的顺序非常相似,但不一定完美) 因此,我的直觉是,我不能假设我的回答会以特定的顺序被接收,即使它

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

目前,它看起来像是发出了一个http请求,并且下一个http 200 OK响应被快速接收,因此所有内容都处于正确的顺序中。然而,我却看到了相反的情况。例如,使用Google Maps API v2,我多次请求位置信息,然后以任意顺序接收信息(与我请求的顺序非常相似,但不一定完美)

因此,我的直觉是,我不能假设我的回答会以特定的顺序被接收,即使它们在大多数情况下是有序的。所以我想知道如何从回复中确定这个顺序

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

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


谢谢。

应用层的HTTP协议似乎没有提供这种功能,因此我必须深入传输层来确定这一点。在我的例子中,TCP/IP层使用序列号

HTTP仅假定一个可靠的
运输;任何提供 可以使用这种担保;这个 HTTP/1.1请求和 将响应结构添加到
协议的传输数据单元 所讨论的问题不在本报告的范围之内 本规范

阅读更多:


停止捕获数据包后,请执行以下步骤:

  • 将光标定位在GET请求上

  • 打开分析菜单

  • 单击“跟踪TCP流”


  • 您将看到一个按顺序显示请求和响应的新窗口。

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

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

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

    请求;反应;要求回应

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

    请求;反应;要求要求反应;反应;要求回应

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

    当调试/观察单个TCP连接时,Filipo的建议是经典的,但是,当观察多个TCP连接时,您不能单击follow TCP流,因为您必须为每个连接执行该操作

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

    此外,Wireshark可以解压响应体,如果所有响应体都已到达,它将自动解压,但不会在后续TCP流中解压


    我总是使用Wireshark来调试HTTP。

    使用Wireshark而不是Fiddler2没有什么错,特别是如果你有更多的经验的话。Wireshark不会为你解压gzip/delfate。而且它也不会从正文中删除传输块编码协议。此外,Fiddler仅适用于Windows。这是有效使用Wireshark的非常好的信息,但我正在寻找一些不同的答案。实际上,这应该是答案。在tcp流视图中,您可以看到请求/响应的确切顺序。