赞
踩
四次挥手过程网上都很详细,简单描述一下:
1、一次挥手:
客户端想要释放连接,向服务器端发送一段 TCP 报文,其中:
2、二次挥手:
服务器收到客户端的请求,回应客户端,进入 CLOSE-WAIT 阶段,其中:
3、三次挥手
服务器端经过 CLOSED-WAIT 阶段处理好数据后,向客户端发出一段释放连接 TCP 报文,其中:
4、四次挥手
客户端收到服务器端释放连接请求,进入TIME-WAIT阶段,并向服务器端发送一段报文回应,其中:
为什么要等2MSL?
MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
为了保证客户端发送的最后一个ACK报文段能够到达服务器。
因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。
所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
了解知识(了解即可)
PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。
参考:
https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
https://blog.csdn.net/qq_38950316/article/details/81087809
https://blog.csdn.net/qq_43584847/article/details/106224209
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。