连续 [ACK] 数据包而接收方没有任何响应

连续 [ACK] 数据包而接收方没有任何响应

我们的应用程序通过 TCP/IP 向我们的一台设备发送一些数据,但是之间的通信无法正常工作。因为 TCP/IP 是双向的,所以如果一端向另一端发送数据,另一端就会发送 ACK 标志。

捕获

如捕获结果所示,IP:192.168.0.43 发送了一堆大小为 1460 字节的 [ACK] 数据包,但 192.168.0.103 没有响应。尽管没有响应,但 IP:192.168.0.43 的行为就像它收到响应并增加序列号一样。虽然没有 TCP 重传错误,但我认为通信正常。但是它是如何工作的呢?

谢谢。

答案1

不,好吧。大量数据从 192.168.0.43 传输到 192.168.0.103。它发送 1460 个八位字节的数据包(这是该方向的 MSS)。没有反向流数据,因此它不断确认已收到八位字节 1。

在反向,我们看到零长度的数据包,其确认的八位字节数不断增加,并且稳步增加。192.168.0.103 仅确认接收了流,但本身并不发送任何内容。

请注意,接收方不会为每个数据包发送单独的确认。在 TCP 中,确认的不是数据包接收,而是八位字节接收。一旦发送方收到“ack 42463”,它就知道到目前为止的所有八位字节都已收到,无论它们是如何分段的——是一个 42463 字节的大数据包还是 40 个大约 1 千字节的数据包。并且,知道这一点后,接收方可以自由地利用宽窗口并每隔几个数据包发送确认。在这种情况下,它只大约每五个数据包发送一次确认,一次确认已接收其中的所有数据。

相关内容