我正在实现一个 TCP 堆栈,并且遇到了半关闭连接的问题。
我的实现充当服务器端。客户端建立连接,然后发送一些数据,然后发送“FIN”消息。然后服务器确认来自客户端的数据,发送自己的一些数据,然后才关闭它的一半连接(发送“FIN”)。
问题是客户端没有确认服务器在半关闭连接上发送的数据,也没有确认它的最终“FIN”消息。根据 netstat,客户端处于状态 FIN_WAIT2。在服务器不发送任何数据的相同场景中,事情进展顺利。有问题的客户是netcat,所以我认为问题出在我的最后:)
我的问题是,一般来说,我是否应该期望在半关闭的连接上发送数据的 ACKS?尤其是在上面的例子中我做错了什么。
任何帮助将非常感激!