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

这就是我所理解的!
Packet# 4连接建立后,客户端启动push函数并发送包含来自服务器的文件的客户端请求的有效负载(HTTP)!
在服务器端,接收到有效载荷它会增加ACK (有效负载大小为207),因此它将变成208。
之后,在packet#7服务器上响应客户端的请求,for.It用1368字节发送有效负载。这发生了两次,因为我们可以看到seq号码为2737。
到目前为止,如果我错了,请纠正我。
来自packet#9
为什么序列号在packet#9上更改为208和packet#9。客户端是否有任何传输?
在packet#11上,序列号如何再次更改为3680和ack=343。
有人能帮我在packet#9之后解释一下吗
发布于 2016-05-27 08:19:52
我认为你只需要记住这两个关键的想法:
因此,要回答你的问题:
为什么序列号在packet#9上更改为208和packet#9。客户端是否有任何传输?
数据包9的序列号为208,因为在分组4中,客户端向GET服务器发送HTTP请求。分组4的序列号是1,所以当您添加207的有效载荷时,客户端应该使用的下一个序列号是208。您可以看到,在数据包5中,来自服务器的ACK为208。换句话说,服务器确认所有数据,包括207,并期望来自客户端的下一个序列号为208。
由于服务器已经发送了带有有效负载的3个分组,所以分组9的确认号为3680。分组6的有效负载为1368,分组7的有效负载为1368,分组8的有效负载为943。同样,当您考虑序列号是数据包中的第一个字节时,这也是有意义的。例如,如果您查看数据包6,序列号是1,但是您可以从数据包7中看到序列号已经跃升到1369,因此您可以计算出数据包6的有效负载一定是1368。
在packet#11上,序列号如何再次更改为3680和ack=343。
同样的原则也适用于这里。对于分组11,序列号为3680,因为服务器发送的最后一个分组(分组8)的序列号为2737加上有效负载为943,因此它应该使用的下一个序列号是3680。
确认号为342,因为客户端在分组10中发送了有效载荷。分组10的序列号为208,因此我们可以计算出PSH/ACK中的有效负载一定是134。再次,服务器说:“我确认您所有的数据,包括Byte 341,下一个序列号是342。”
希望这能帮上忙,如果你需要澄清的话,请告诉我。
友好的建议:不要使用截取工具,然后在手机上拍照,只需张贴截图即可。:)
https://serverfault.com/questions/779292
复制相似问题