快速提问我一次性了解[FIN ACK]意味着主机正在确认收到的最后一条消息并关闭套接字。但是,如果没有先前的信息,它收到的消息应该只是FIN?
Host A HOST B
Data_SM (smpp) ------>
<------ [ack] (tcp)
<------ [data_sm ok] (smpp)
[ack] (tcp) ------>
<------ [FIN ACk] (tcp)
[FIN ACK] (TCP) ------>
<------ [ack] (tcp)
我需要理解的是,如果关闭连接是主机B想要做的事情,主机B发送FIN ACK而不仅仅是FIN,为什么我们还没有发送任何数据,因为我们没有#&# 39; t已被确认?
此连接的关闭是意外的,因为主机B上的应用程序没有理由关闭它。然而,由于[FIN ACK]源自主机B的IP而不是防火墙的IP,因此两台主机之间可能存在防火墙,但是关闭连接的可能性非常小。另一方面,由于在主机A和B之间建立了TCP连接,因此关闭连接之间的任何设备都会使其看起来像是关闭它的另一个主机。 HOST A是应用层是在Linux主机上用Java实现的应用层和OS我不知道。任何帮助都会很棒。
此致