为什么socket刚建立连接状态就变成fin wait2

如题所述

进程被kill的时候,会对所有已经打开的文件描述符执行close。
而这个close发起tcp连接断开时的四次握手。
就这个例子来说
第一次:服务端发FIN给客户端。而这个FIN表示服务端已经没有数据要发送了。
第二次:客户端接受FIN后,由系统的tcp/ip协议栈自动发送ack给客户端。表示我知道你没有数据要给我了。
第三次:客户端应用程序执行close。这个是进程自己控制的。跟第一次的意义一样(我也没有数据发送了)。
第四次:服务器端发ack给客户端表示确认。

上面的步骤就说明了。在客户端执行第二步以后。是可以给服务端发数据的。具体这些数据能不能正常被处理要依赖于具体的实现。

详细的细节你可以参考《unix网络编程》2.5节TCP连接的建立和终止
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网