先看一下这个图、体会一下状态更迭。


Close_wait造成的的原因:
Close_wait状态可以理解为socket断开时候的半开状态,出现在收到Fin之后。close wait 可以这么理解,就是等待应用对socket进行close,所以叫close wait。
程序在接受到客户端连接断开的通知时(收到Fin, 程序中体现为Readlen == 0),程序中没有对客户端的socket进行close操作(不进行close操作不会发送Fin)所造成。
Close_wait造成的的原因:
通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。
客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进入CLOSED状态。
这样做的原因是:
1)可靠地实现TCP全双工连接的终止
2)允许老的重复分节在网络中消逝
赠送一条Linux系统统计各链接状态的命令
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'