Close_wait和Time_Wait

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



avatar
avatar

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]}'



版权声明:本文为原创,欢迎转载,转载请注明出处,勿用于商业用途!