TCP状态转换

2020-12-10  本文已影响0人  StevenHD
大纲

一、TCP状态转换

被动方关闭的一端更早地进入CLOSED状态
主动方关闭的一端会进入TIME_WAIT状态,等一段时间后才能转化为CLOSED状态

二、观察每个状态

2.1 套接字处于LISTEN状态

LISTEN状态

紧接着,当我们再打开客户端以后,就进入了ESTABLISHED状态:

ESTABLISHED状态

主动调用close()的函数的一端就会处于FIN_WAIT2状态,被动关闭的就是处于CLOSED_WAIT状态

2.2 FIN_WAIT_2状态和CLOES_WAIT状态

图示结果

CLOSE_WAIT状态有一个超时时间,过一会儿就会自动消失

2.3 TIME_WAIT状态

为什么不直接关闭掉,而是要等2MSL

出现了大量的CLOSE_WAIT状态的原因?
服务器端的代码有bug,忘记调用close()函数关闭套接字了

客户端处于TIME_WAIT状态是无所谓的,因为端口可以临时分配,但是服务器端如果是TIME_WAIT状态就会导致端口不被释放,一直在2MSL中处于被占用状态。

三、服务器和客户端同时关闭的状态

大纲

四、FIN和ACK一起发

上一篇 下一篇

猜你喜欢

热点阅读