注意:如果这个网站不适合这个主题,我深表歉意。这个问题是针对网络工程的超级用户的
我正在关注麻省大学 Wireshark 实验室, 尤其,TCP 上的一个。
在这个实验中,你被要求将文件上传到网站,并观察 TCP 流量。令我惊讶的是,上传文件的传输首先发生(通过 TCP),然后才POST
发出请求。我将我的捕获与他们提供的一个(tcp-ethereal-trace-1),但它显示的是同样的事情。
这引出了几个问题:
- 文件传输是否确实发生在 HTTP POST 请求之前?
- 如果是,为什么?
- 服务器如何知道要接收一个文件?
- 为了预期 POST 请求,它将监听并记录文件多长时间?
- 实验中的第 7 个问题要求您将 HTTP POST 视为 TCP 连接中的第一个段。这似乎与其他发现相矛盾。这是怎么回事?
答案1
文件传输是否确实发生在 HTTP POST 请求之前?
不是的。参考 tcp-ethereal-trace-1 以及它在 wireshark 中的显示方式:
- 在转储的第 1 到 3 帧中,TCP 握手已完成。
- POST 请求从第 4 帧开始:您会在帧内容中看到“POST /ethereal-lab ..”
- POST 请求持续到第 199 帧,即请求的最后一帧。
- 最后一帧在 wireshark 中显示为实际 POST,因为只有这样才能收集重建完整请求所需的所有信息。如果您查看详细信息,它还会显示此请求由 122 个 TCP 段组成,即显示的所有在此之前到达的帧,其中第一帧是请求的开始。