任何数据丢失都会被检测到并自动纠正,这就是为什么 TCP 也被称为可靠协议的原因。
换句话说,
传输层负责从源主机到目标主机的无差错端到端数据传输。
TCP确实保证是可靠的传输。提出一个问题,在应用层回复收到的消息(在 TCP 上传输)告诉发送者消息已成功接收是否多余(或无用,对不起我的英语不好)?
任何数据丢失都会被检测到并自动纠正,这就是为什么 TCP 也被称为可靠协议的原因。
换句话说,
传输层负责从源主机到目标主机的无差错端到端数据传输。
TCP确实保证是可靠的传输。提出一个问题,在应用层回复收到的消息(在 TCP 上传输)告诉发送者消息已成功接收是否多余(或无用,对不起我的英语不好)?
它不是多余的。TCP 只关心两个系统之间的传递,而不关心两个应用程序之间的传递。一旦成功接收到数据,就会发送 ACK。然后将数据包的有效负载放入接收方应用程序的套接字缓冲区中。因此,在应用程序(从套接字缓冲区)读取有效负载之前,特别是在它处理有效负载之前发送 ACK,例如根据处理的有效负载对数据库进行更改。
因此,如果客户端在应用程序级别获得某种确认,则客户端只能知道应用程序已成功处理有效负载。不过,这不需要是明确的确认 - 简单地发回响应可能就足够了。细节取决于应用协议的语义。