四次挥手过程:
客户端——发送带有FIN标志的数据包——服务端,关闭与服务端的连接,客户端进入FIN-WAIT-1状态。
服务端收到这个FIN,它发回⼀个ACK,确认序号为收到的序号加1,服务端就进入了CLOSE-WAIT状态。
服务端——发送⼀个FIN数据包——客户端,关闭与客户端的连接,客户端就进入FIN-WAIT-2状态。
客户端收到这个FIN,发回ACK报⽂确认,并将确认序号设置为收到序号加1,TIME-WAIT状态。
为什么四次:
因为需要确保客户端与服务端的数据能够完成传输。
CLOSE-WAIT:
这种状态的含义其实是表示在等待关闭。
TIME-WAIT:
为了解决网络的丢包和网络不稳定所带来的其他问题,确保连接方能在时间范围内,关闭自己的连接。
如何查看TIME-WAIT状态的链接数量?
netstat-an|grep TIME_WAIT|wc -l查看连接数等待time_wait状态连接数。
为什么会TIME-WAIT过多?解决方法是怎样的?
可能原因:高并发短连接的TCP服务器上,当服务器处理完请求后立刻按照主动正常关闭连接。
解决:负载均衡服务器;Web服务器首先关闭来自负载均衡服务器的连接。
![](/images/780-200-2.jpg)