什么是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时间结束再使用此端口。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值