TCP4次挥手流程
- Initiator 发起端
- Receiver 接收端
- 起始阶段两端都是ESTABLISHED
- 发起端先发起close命令,在tcp协议的底层会发送一个FIN(tcp包,seq=x,ack=y),发送FIN包意味着发起端要与接收端断开链接。状态变为FIN_WAIT_1,处于等待的第一步。
- 接收端接收到消息后,状态变为CLOSE_WAIT,同时回复ACK消息(seq = y,ack = x + 1),表示tcp包已经收到了,
- 发起端接收到ack消息后,状态变为FIN_WAIT2.
- 接收端收到ack消息后,也要发送一个FIN消息(seq = y + 1, ack = x + 1),ACK = 1, FIN = 1,调用close()方法,状态变为LAST_ACK
- 接收端在收到这条ACK消息后,状态变为WAIT_TIME状态。从WAIT_TIME到CLOSED要等待2倍的MSL
- 同时向接收端再发送一个ACK消息(