在应用层回复收到的报文(在TCP上)告诉发送者报文已经成功接收难道没有用吗?

在应用层回复收到的报文(在TCP上)告诉发送者报文已经成功接收难道没有用吗?

任何数据丢失都会被检测到并自动纠正,这就是 TCP 也被称为可靠协议的原因。

换句话说,

传输层负责从源主机到目标主机无错误、端到端地传送数据。

TCP 是保证成为一个可靠的传输确实存在。一个问题来了,多余的(或者无用(抱歉我的英语不好)回复收到的消息(通过 TCP 传输)应用层告诉发送者消息已成功接收?

答案1

它不是多余的。TCP 只关心两个系统之间的传递,而不是两个应用程序之间的传递。成功接收数据后,就会发送 ACK。数据包的有效负载随后被放入接收方应用程序的套接字缓冲区中。因此,ACK 是在应用程序读取有效负载(从套接字缓冲区)之前发送的,特别是在处理有效负载之前,例如根据处理后的有效负载对数据库进行更改。

因此,客户端只有在应用程序级别收到某种确认时才能知道应用程序已成功处理有效负载。但这不需要是明确的确认 - 只需发回响应就足够了。详细信息取决于应用程序协议的语义。

相关内容