计算机网络(五),TCP四次挥手

目录

1.TCP四次挥手详情

2.为什么会有TIME-WAIT状态

3.为什么需要四次握手才能断开连接

4.服务器出现大量CLOSE_WAIT的原因

五、TCP四次挥手

1.TCP四次挥手详情

 

(1)一开始双方都属于已连接状态

(2)客户端发送一个报文段:FIN=1seq=uFIN表示连接关闭请求,seq是之前最后一个发送的数据的标号+1。客户端进入关闭等待状态1FIN-WAIT-1

(3)服务端接收到关闭连接请求之后,通知程序需要关闭连接,然后返回一个报文段:ACK=1seq=vack=u+1。这里标志位ACK=1表示确认号(ack)有效seq表示当前数据包顺序号,ack表示顺序号为u的数据包已经确认接受,请求数据号为u+1数据。状态变为关闭等待状态(CLOSE-WAIT

(4)客户端接收到数据之后进入关闭等待状态2FIN-WAIT2

(5)服务器端发送报文段:FIN=1ACK=1seq=wack=u+1,用来关闭服务端到客户的数据传送,服务端进入一个LAST-ACK状态

(6)Client收到FIN之后,Client进入时间等待状态(2MSL之后关闭连接)接着发送一个报文段:ACK=1seq=u+1ack=w+1Server进入CLOSED状态,完成四次挥手

2.为什么会有TIME-WAIT状态

(1)确保有足够的时间让对方收到ACK

(2)避免新旧连接混淆

3.为什么需要四次握手才能断开连接

  TCP连接是全双工的,服务端可以发送数据到客户端,客户端也可以发送数据到服务端,发送方和接收方都需要两次挥手才能关闭

4.服务器出现大量CLOSE_WAIT的原因

出现原因:(1)客户端一直请求关闭连接,服务端发送的数据对方接受不到(2)我方忙于读和写没有及时关闭

解决方法:(1)程序有bug,检查代码(2)检查配置

原文地址:https://www.cnblogs.com/xzmxddx/p/10354734.html