第一次第二次挥手
服务端收到客户端的fin包进入TCP_CLOSE_WAIT状态。即第一个挥手完成,然后服务器发送ack给客户端,即第二次挥手完成。
第三次挥手
接着服务器调用close函数关闭本端的写端。
状态的处理逻辑在tcp_close_state函数中。由下面代码可知,当前是TCP_CLOSE_WAIT状态,即将进入LAST_ACK状态,然后发送一个fin包给客户端,即完成了第三次挥手。
第四次挥手
这时候服务器socket的状态是LAST_ACK,收到客户端发送的最后ack包的时候即完成了第四次挥手,处理代码在tcp_ack中。
领取专属 10元无门槛券
私享最新 技术干货