在应用层回复接收到的消息(在 TCP 上)告诉发送者消息已经成功接收是没有用的?

Joh*_*ohn 1 networking tcpip tcp

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

换句话说,

传输层负责从源主机到目的主机无差错、端到端的数据传输。

TCP 确实保证可靠的传输。提出了一个问题,在应用层回复接收到的消息(在 TCP 上传输)告诉发送者消息已经成功接收是多余的(或无用的,对不起我的英文不好)?

Ste*_*ich 9

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

因此,如果客户端在应用程序级别获得某种确认,则它只能知道应用程序已成功处理了有效负载。不过,这不需要是明确的确认——简单地发回响应可能就足够了。细节取决于应用协议的语义。