TCP端口的十一种连接状态∶
CLOSED∶端口默认是关闭状态。
LISTEN∶服务器程序开始监听一个端口,就是LISTEN状态。 SYN_RCVD∶三次握手的第二次握手后的端口状态,是收到了客户端发送的SYN_SENT数据包之后的状态,这个状态很短暂,正常在服务器上是很少看到的,除非服务器故意不发送最后一次握手数据包,服务器返回给客户端sYN确认之后就会将在自己的端口置为
sYN_RCvD. SYN_SENT∶SYN_SENT状态表示客户端已发送SY=1的满求连接报文,发送之后客户端就会将自己的端口状态置为
SYN_SENT. ESTABLISHED∶表示已经连接成功,客户端收到服务器的确认报文会回复服务器,然后就将端口置为ESTABLISHED,服务器第三次收到客户端的Ack确认就会将端口置为ESTABLISHED并开始传输数据。
FTN_MAIT_1∶出现在主动关闭方,FIN._wAIT_1状态实际上是当soCkEr在ESTABLISHED状态时,当任意一方想主动关闭连接,向对方发送了FIN=1的断开连接请求报文,此时该soCkET即进入到IN_MAIT_1状态。而当对方回应ACK报文后,则进入到FINLMAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马 上回应ACK报文,所以FINMAIT_1状态一般是比较难见到的,而FINWAIT_2状态还有时常常可以用netstat看到。
FTIN_MAIT_2∶出现在主动关闭方,当被动方回应FIN_MAIT_1的ACK报文后,则进入到FIN_MAIT_2状态
TIME_MAIT∶出现在主动关闭方,表示收到了对方的FIN请求关闭报文,并发送出了ACK报文,就等2*MSL(Max Segment Lifetime)后即可回到CLOSED可用状态了。如果FIN_MWAI_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到 TTME_MAIT状态,而无须经过FIN_WAIT_2状态。
CLosSING∶这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIM报文后,按理来说是应该先收到(或同时收到对方的 ACK报文,再收到时方的FIN报文。但是CLosING状态表示你发送FTM报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论∶那就是如果双方几乎在同时close一个soCKET的话,那么就出现了双方同时发送FIN报 文的情况,也即会出现cLoSING状态,表示双方都正在关闭soCKET连接。
CLoSE_MAIT∶表示在等待关闭端口,这种状态存在于被动关闭的一方.
LAST_ACk∶是被动关闭方在主动关闭一方在发送FIN报文后,最后等待对方的ACK报文,当再次收到ACk报文后,也即可以进入到CLos=D可用状态了.
更多文章和资料|点击下方文字直达 ↓↓↓ 阿里云K8s实战手册 [阿里云CDN排坑指南]CDN ECS运维指南 DevOps实践手册 Hadoop大数据实战手册 Knative云原生应用开发指南 OSS 运维实战手册