Der*_*itz 7 tcp http wireshark
如果我向同一服务器发出多个HTTP Get请求并获得每个HTTP 200 OK响应,我如何使用Wireshark告诉哪个请求映射到哪个响应?
目前它看起来像是一个http请求,并且很快收到下一个HTTP 200 OK响应,所以一切都按照正确的顺序进行.然而,我已经看到了相反的事情.例如,使用谷歌地图API v2我已经提出了几个位置信息请求,然后以任意顺序接收信息(非常类似于我请求它的顺序,但不一定完美.)
所以我的直觉是我不能假设我的回复将以特定的顺序被接收,即使它们可能在大多数时间都是有序的.所以我想知道如何从响应中确定这个顺序.
更新:澄清我需要什么.我只需要知道服务器已收到请求.看起来我需要通过查看序列号甚至ACKS来做到这一点.这种方法背后的原因是我基本上观察了一个Web应用程序并检查它是否正在发送信息并且正在接收信息.
更新:这与wireshark没有任何关系.我相信这让人很困惑,所以我把它从标题中删除了.它与TCP/IP协议之上的HTTP协议以及我们如何映射对请求的响应有关.
谢谢.
小智 14
停止捕获数据包后,请按照以下步骤操作:
将光标定位在GET请求上
打开"分析"菜单
点击"关注TCP流"
您将按顺序获得一个包含请求和响应的新窗口.
当我在Google上搜索一个完全不同的问题时,我看到了这个问题,我想我可以提供更完整的答案:
HTTP规定响应必须按照请求的顺序到达.因此,如果您在给定时间查看单个TCP连接,您应该看到:
要求; 回应; 要求; 回应......
同样在HTTP/1.1中,支持"管道",其中客户端不必等待响应到达以发出下一个请求.在这种情况下可以观察到的是:
要求; 回应; 要求; 要求; 回应; 回应; 要求; 响应
在HTTP响应本身中,没有引用触发它的特定请求.
调试/观察单个TCP连接时,Filipo的建议是经典的,但是,当观察多个TCP连接时,您无法单击跟随TCP流,因为您必须为每个连接执行此操作.
如果您有许多TCP连接和许多请求/响应,则必须查看请求数据包中的TCP源端口,以及响应数据包中的TCP dest端口以了解哪个响应与每个tcp连接相关,然后应用HTTP请求/响应顺序规则.
此外,Wireshark CAN解压缩响应主体,如果所有响应主体都已到达,它将自动执行,但它不会在Follow TCP Stream中执行.
我总是使用Wireshark来调试HTTP.
看来HTTP协议在应用层并没有提供这种能力,所以我必须深入到传输层来确定这一点。在我的例子中,TCP/IP 层使用序列号。
HTTP 仅假定可靠的
传输;可以使用提供此类保证的任何协议;HTTP/1.1 请求和响应结构到
相关协议的传输数据单元的映射超出了本规范的范围。