假设我正在创建一个有故障的 tcp 服务器,例如,它告诉另一台
计算机将有 7 个数据包通过,但只发送了 6 个。
另一台计算机会怎么做?
答案1
TCP 协议本身从未指定应从服务器向客户端传输多少个数据包。客户端只会在收到 TCP 数据包时向服务器发送 ACK(确认)数据包。该协议在设计时就考虑到了网络故障,因此服务器未能发送另一个数据包不会造成任何损害。
现在,应用层,您可以编写一个需要预先传递字节数的软件(例如下载管理器),并且服务器故障确实会导致它发生故障。但这超出了您的问题范围。
答案2
这取决于连接是如何关闭的,或者是否关闭。如果您指的是系统崩溃,并且发送方只是停止传输,那么本文将有助于解释使用 Keepalive 的情况。TCP 不需要 Keepalive。