关于Wireshark和http / tcp流

时间:2015-04-01 02:38:28

标签: http tcp wireshark

enter image description here

任何人都可以告诉我为什么在发送请求之前收到HTTP 200响应?太奇怪了。

2 个答案:

答案 0 :(得分:1)

一种可能性是您的捕获丢失了一个数据包 - 例如,因为由于某种原因,捕获跟踪的程序没有捕获该数据包。

第747帧是来自会话发起人(HTTP客户端,即浏览器或......)的数据包,它是请求的一部分(可能是请求,因为它来自连接的发起者),它不适合单个链路层数据包。

Wireshark将其报告为"重新组装的PDU的TCP段"因为它没有找到包含请求的所有数据包,并且无法重组(是的,这不是最好的措辞,因为PDU 没有重新组装;我不确定更好的措辞是什么......)。

Wireshark ,在某些情况下,检测"缺失" TCP段,通过注意"漏洞"在TCP序列号空间中​​。什么是TCP序列号,段长度和"下一个序列号"捕获帧746,747和750的值?

答案 1 :(得分:1)

实际上,GET请求是在#747包中发送的。您可以从以下事实中了解它:

  • 数据包的大小(628字节) - 它足以发送GET
  • 从服务器收到响应。

此请求没有正文但有Content-Type标题。我想因为那个标题Wireshark认为它将成为一个身体并试图等待它直到数据包#776。我检查了类似的情况,但没有Content-Type标题,Wireshark在正确的位置显示请求。

RFC说"请求的消息体的存在通过在请求的消息头中包含Content-Length或Transfer-Encoding头字段来发信号。"所以不应该有一个身体。但据我所知,即使没有标准或实施良好的协议变体,Wireshark仍可用于工作。所以我认为这不是一个错误。