为什么等待2MSL,从TIME_WAIT到CLOSE?
在Client发送出最后的ACK回复,但该ACK可能丢失。
所以Client不能立即关闭,它必须确认Server接收到了该ACK。
Client会在发送出ACK之后进入到TIME_WAIT状态。
Client会设置一个计时器,等待2MSL的时间。
如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。
所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。
MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。
如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)