本文已参与「新人创作礼」活动,一起开启掘金创作之路。
全局
建立连接
Listen
LISTEN: server处于监听状态,等待client连接。
SYN-SENT
SYN-SENT:表示client已发送SYN报文,等待server的第2次握手。
SYN-RCVD
SYN-RCVD:表示server接受到了SYN报文,当收到client的ACK报文后,它会进入到ESTABLISHED状态。
ESTABLISHED
ESTABLISHED:表示连接已经建立。
释放连接
FIN-WAIT-1
FIN-WAIT-1:表示想主动关闭连接。向对方发送了FIN报文,此时进入到FIN-WAIT-1状态。
CLOSED-WAIT
CLOSE-WAIT: 表示在等待关闭。当对方发送 FIN 给自己,自己会回应一个ACK报文给对方,此时则进入到CLOSE-WAIT状态在此状态下,需要考虑自己是否还有数据要发送给对方,如果没有,发送FIN报文给对方。
FIN-WAIT-2
FIN-WAIT-2:只要对方发送ACK确认后,主动方就会处于FIN-WAIT-2状态,然后等待对方发送FIN报文。
CLOSING
CLOSING:一种比较罕见的例外状态。表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。如果双方几乎在同时准备关闭连接的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态表示双方都正在关闭连接。
LAST-ACK
LAST-ACK:被动关闭一方在发送FIN报文后,最后等待对方的ACK报文 。当收到ACK报文后,即可进入CLOSED状态了
FIN-WAIT-1
如果FIN-WAIT-1状态下,收到了对方同时带FIN标志和ACK标志的报文时 ,可以直接进入到TIME-WAIT状态,而无须经过FIN-WAIT-2状态
CLOSED
CLOSED: client处于关闭状态。