前言
为何TCP ”四次分手“ 的过程中会有一个TIME_WAIT状态?这个状态有什么意义呢?这是网络中的一个经典问题,本文将给出精简的回答。
什么是TIME_WAIT状态
这是TCP通信协议中出现的一个状态,端点会在这个状态停留2MSL( 最长分节生命期 ),参见下图:
左下方的那个状态即是。
TIME_WAIT状态存在意义之一
假设上图中,最后的那个ack分节传递失败了,那么服务器端会要求客户端再传递一次这个分节。如果没有此状态( 客户端直接退出 ),那就无法重传这段丢失了的分节( 所有对客户端的请求均会返回RST )。
TIME_WAIT状态存在意义之二
假定这个连接刚刚关闭,便出现这个连接的一个化身,则上一次连接中仍然在传递过程中的分节会被这次化身连接误收。
说明
可以根据存在意义一和意义二,思考一下为什么TIME_WAIT状态停留时间是2MSL。