2MSL

什么是2MSL

  MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文,而ip头中有一个TTL域,TTL是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。

    2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。


TTLMSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL


转自:https://www.cnblogs.com/tekkaman/p/4849522.html

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在计算机网络中,2MSLMaximum Segment Lifetime)指的是socket的等待时间,它是TCP连接关闭的时长。 当一个TCP连接中的一端想要关闭连接时,它会发送一个FIN(FINal)包给另一端,表示它不会再发送数据了。另一端接收到FIN包后,会发送一个ACK(ACKnowledgment)包作为回应,表示它已经收到了关闭连接的请求。然后,另一端也会发送一个FIN包给第一端,表示它也不会再发送数据了。第一端接收到FIN包后,发送一个ACK包作为回应,这样连接就正式关闭了。 但是,可能存在一种情况,就是第一端发送了FIN包,但是第二端没有收到该包,导致第二端一直没有发送ACK包,从而使得第一端无法得知连接已关闭。为了解决这个问题,TCP引入了2MSL的等待时间。 2MSL是两倍的最大报文段生存时间(Maximum Segment Lifetime)。报文段是TCP通信中的基本单位,每个报文段在传输过程中都有一个生存时间,如果超过了这个时间还没有到达目的地,就会被丢弃。 当第一端发送了FIN包后,它会进入TIME_WAIT状态,并等待2MSL的时间。在这个等待时间内,如果第二端收到了FIN包,它会发送ACK包,并等待一段时间,再发送自己的FIN包。如果第一端没有收到ACK包,那它会重新发送FIN包。如果第一端已经收到了ACK包,那它就可以安全地关闭连接了。这样,通过2MSL的等待时间,TCP确保了安全关闭连接的过程。 总结起来,socket 2MSL是TCP连接关闭的等待时间,用于确保双方都能收到对方的关闭请求,从而安全地关闭连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值