当前位置: 首页 > 工具软件 > MSL > 使用案例 >

为什么需要等待2MSL

阎劲
2023-12-01

为什么第四次握手要等待2MSL后客户端才进入CLOSED状态?
MSL(Max Segment Lifetime):最长报文段寿命

  • 报文最长存活时间就是1MSL,服务端在第三次挥手后也会等待2MSL时间,为的就是怕第四次挥手的ACK确认报文丢失。
  • 因为若不等待2MSL客户端就立即进入CLOSED,有可能ACK包丢失从而导致服务端一直处于LAST_ACK状态,此时即使服务端再怎么重发也没用了,因为客户端已经进入CLOSED状态了。
  • 所以客户端发送ACK包后等待2MSL,即假设发ACK包要1MSL,若下一个1MSL服务器没用重发FIN+ACK包就表示ACK包成功发给服务端。因为上面也提到第三次挥手即服务端发FIN+ACK后也会等待2MSL,超时就会重发,即发送FIN+ACK算1MSL,接下来就是等客户端发的ACK,若超过1MSL,这个ACK还没发过来就说明它丢失了,所以就重发续上。
  • 从而保证了这个ACK服务端能可靠地收到。
 类似资料: