是否停止并等待TCP发送带有ACK的数据



假设我有一个简单的TCP连接,带有客户端和服务器。客户端将一些数据发送到服务器,服务器在对原始数据进行一些处理后将一些数据发回客户端。

在这种情况下,使用停止和等待协议,数据包流将如何工作,我不是100%。当客户端向服务器发送原始数据时,服务器是同时发送ACK和新数据(同一数据包?),还是分别发送?

从我在网上看到的例子来看,我无法完全理解服务器何时将数据发送回客户端,以及何时发送ACK。

谢谢!

如果服务器有一些数据已经排队发送回客户端,它可以使用TCP背负,以便(服务器对客户端数据包的确认)和(服务器的一些回复数据)共享一个数据包。这使得协议更有效率,因为需要发送回客户端的数据包更少。

如果服务器在想要发送ACK数据包时没有任何自己的应用程序级数据要发送回,那么ACK数据包将作为独立数据包返回到客户端。(在停止和等待协议中,服务器可能还没有任何应用程序级别的数据准备发送回,因为ACK应该在收到客户端的数据包后立即返回客户端,在这种情况下,服务器应用程序在处理完收到的客户端数据后才生成任何数据)