最近调试时遇到一个tcp连接 一发交易server端就从es连接状态变成close_wait状态的问题。
tcp连接需要三次握手,而被动关闭连接则是需要四次握手的,不能说单方面关闭连接就是成功关闭连接了。
首先我们要搞清楚close_wait出现的机制和原理。
close_wait状态其实client端和server端都有可能出现.
我们先看其他博客对close_wait解释.
他的情况是client端为close_wait状态.
由此可见,server端出现close_wait状态的原因是因为client端主动关闭连接,server端被动关闭连接,因为某些原因,关闭连接的机制进行了一半就停止了。
按照这种分析我们项目是因为client端因为什么进行了关闭连接。最后发现是再发送数据时,因为代码原因,流的长度并未添加,只发送了流的内容。那么这为什么会导致我们client端去关闭连接呢。。。(尴尬) 我主要时想分享这位博主的关于tcp状态的分析。
tcp内幕博客