在做TCP/IP网络程序时, 经常会遇到一些特殊的TCP连接状态, 比如CLOSE_WAIT, TIME_WAIT, 记录一下, 防止下次又忘记.
这两个状态的出现都与TCP连接的关闭有关。 由于TCP连接的关闭分为主动关闭和被动关闭两种,而CLOSE_WAIT状态出现在连接是被动关闭的情况,即对方关闭了连接。但如
果我方收到对方关闭的消息后(如read函数返回0)并没有关闭连接,此时的连接会变成CLOSE_WAIT状态。如果服务器程序在客户端关闭连接后未调用close关闭连接,会产生大量
的CLOE_WAIT连接并会占用系统资源,而一个CLOSE_WAIT会维持至少2个小时的时间.
TIME_WAIT与之相反, 主动关闭连接的一方在调用close后会变成TIME_WAIT状态,然后在保持这个状态2MSL(max segment lifetime)时间之后,彻底
关闭回收资源.