(一)TCP的四次挥手
挥手是为了终止来连接:
第一次挥手:客户端发送FIN包给服务器端,关闭数据传送,客户端进入FIN_WAIT_1状态;
第二次挥手:服务器端接受到FIN包后,发送ACK包给客户端,并且确认序号+1,之后进入CLOSE_WAIT状态;
第三次挥手:服务器端发送FIN包给客户端,关闭Server到Client的数据传送,并进入LAST_ACK状态,
第四次挥手:客户端发送ACK包给服务器端,进入TIME_WAIT状态,,服务器接收到后也进入CLOSE状态
客户端主动关闭,服务器端被动关闭
(二)TCP挥手过程分析:
1.Client经过2MSL进入关闭状态
- 有足够的时间让对方收到ACK包
- 避免新旧混淆
2.四次握手才能断开:
- 全双工导致发送方和接收方都需要ACK和FIN报文
3. 服务器异常的原因:
- 对方关闭Socket连接,我方忙于读和写,未能及时关闭连接