为什么是2MSL而不是MSL?

为什么等待2MSL,从TIME_WAIT到CLOSE?

 在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以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连接。

转载于:https://www.cnblogs.com/zxpo/p/5234220.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
四次挥手是TCP连接的关闭过程,其中最后一个步骤是等待一段时间,这段时间被称为2MSL,其中MSL是Maximum Segment Lifetime的缩写,表示一个TCP报文段在网络中最长的存活时间。四次挥手等待的时间为什么是2MSL呢?原因主要有以下两点: 1. 确保网络中所有报文段都被正确处理 在TCP连接的关闭过程中,客户端和服务器端都会发送FIN报文段,表示数据传输结束。而这些FIN报文段在网络中会经过多个路由器和交换机,可能会出现网络拥塞、延迟等问题。如果关闭连接的一方没有收到对方发送的ACK报文段,就会重复发送FIN报文段,从而影响网络的稳定性。等待2MSL的时间可以确保网络中所有的报文段都被正确处理,避免重复发送FIN报文段。 2. 避免重复连接的建立 TCP协议中,每个连接都有一个唯一的连接标识,由本地IP地址、本地端口号、远程IP地址和远程端口号组成。如果两个连接的四元组相同,就认为是同一个连接。在TCP连接关闭的过程中,可能会出现延迟的ACK报文段,导致连接关闭的一方在等待2MSL的时间内收到了对方发送的FIN报文段。如果等待时间太短,就有可能将这个新的连接误认为是之前关闭的连接,从而出现数据传输错误的情况。等待2MSL的时间可以避免这种情况的发生,确保新连接的正确性。 综上所述,四次挥手等待的时间为2MSL,主要是为了确保网络中所有报文段都被正确处理,避免重复连接的建立,保证TCP连接的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值