需要帮助理解数据包分析(wireshark)

下面的快照捕获包含对Web服务器的单个HTTP请求,其中客户端Web浏览器从服务器请求一些文件,服务器返回包含所请求文件的HTTP / 1.1 200(OK)响应:

在这里输入图像说明

这是我的理解!

数据包#4build立连接后,客户端启动推送function,并从服务器发送包含客户端请求文件的有效负载(HTTP请求)!

在服务器端,接收有效载荷,它增加ACK(有效负载大小为207),因此它将变成208。

之后,数据包#7服务器响应所请求的客户端,它发送1368字节的有效载荷。 这发生了两次,我们可以看到seq号码为2737。

如果我错了,请纠正我的问题。

从数据包#9开始

在数据包#9上,序列号如何变为208,ACK = 3680? 客户端有没有转移?

在数据包#11上,如何再次将序号更改为3680和ack = 343。

有人可以帮我解释数据包#9

我想你只需要记住这两个关键的想法:

  1. 序列号是数据包的第一个字节,而不是长度。
  2. 确认号码基本上是这样说的:“我期望从另一边看到的下一个序号是X”

所以要回答你的问题:

在数据包#9上,序列号如何变为208,ACK = 3680? 客户端有没有转移?

数据包9的序列号是208,因为在数据包4中,客户端向Web服务器发送HTTP GET请求。 数据包4的序列号是1,因此当您添加207的有效载荷时,客户端应使用的下一个序列号是208.您可以看到,在数据包5中,来自服务器的ACK是208.换句话说,服务器确认所有包括207的数据,并且期望来自客户端的下一个序列号是208。

数据包9的确认号码是3680,因为服务器已经发送了3个有效载荷的数据包。 数据包6的有效载荷为1368,数据包7的有效载荷为1368,数据包8的有效载荷为943.同样,当考虑到序列号是数据包中的第一个字节时,这是有意义的。 例如,如果查看数据包6,序列号是1,但是您可以从数据包7看到序列号已跳到1369,因此您可以计算出数据包6必须有1368的有效载荷。

在数据包#11上,如何再次将序号更改为3680和ack = 343。

这里适用相同的原则。 对于数据包11,序列号是3680,因为服务器发送的最后一个数据包(数据包8)的序列号为2737,加上有效载荷为943,所以它应该使用的下一个序列号是3680。

确认号码是342,因为客户端在数据包10中发送了一个有效载荷。数据包10的序列号是208,所以我们可以计算PSH / ACK中的有效载荷必须是134.同样,服务器说“我承认所有的数据,包括字节341.下一个我期望从您看到的序列号是342.“

希望帮助,让我知道如果你需要澄清任何事情。

友好的build议:不要使用剪切工具,然后在手机上拍照,只是张贴屏幕截图。 🙂