讲一讲TCP的四次挥手?
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。
第二次挥手:服务器端收到FIN后,发送一个ACK给客户端,确认序号为收到的序号+1(与SYN相同,FIN只占用一个序列号),服务器端进入COLSE_WAIT状态。
第三次挥手:服务器端发送一个FIN,用来关闭服务器端到客户端的数据传送,服务器端进入LAST_ACK状态。
第四次挥手:客户端接收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器端,确认序号为收到的序号+1,服务器端进入CLOSED状态,完成四次挥手。
面试题:
为什么要有TIME_WAIT状态?
确保有足够的时间让对方收到ACK包,避免新旧连接混淆。
什么情况下服务器会出现大量的CLOSE_WAIT状态?
当很多客户端大量请求然后关闭Socket连接,服务器方忙于读或写,没有及时关闭连接。
来源:CSDN
作者:黄机智!
链接:https://blog.csdn.net/weixin_43813004/article/details/104297352