TCP的四次挥手之后,主动方为什么等待2倍最大生命周期(MSL Maximum Segment Lifetime)

TCP四次挥手原理

TCP关闭连接用四次挥手来实现,即A—–>B Fin,B—->A ACK, B—–>A Fin,A—-B ACK
TCP的四次挥手之后,主动方为什么等待2倍最大生命周期

A—-B Fin, B—->A ACK,A属于主动关闭方,收到B的ACK之后,A到B的方向连接关闭,即half shutdown,这时不能再发送数据了.
这种状态下B还是可以单向发送数据的,B的数据发送完毕,也可以做关闭动作了,
B——>A Fin,A——> B ACK
B收到ACK,关闭连接,但是A无法知道ACK是否已经到达B,于是开始等待?等待什么呢,假如ACK没有到达B,B会为FIN这个消息超时重传,那如果A等待时间足够,又收到FIN消息,说明ACK没有到达B,于是再发送ACK,知道在足够的时间内没有收到FIN,说明ACK成功到达,这个等待时间至少是:B的timeout+FIN的传输时间,为了保证可靠,采用更加保守的等待时间2MSL.
MSL:报文段最大生存时间MSL.它是任何报文段被丢弃前网络内的最长时间。
TTL:IP对IP 数据报生存时间限制,255秒,所以MSL一般=TTL = 255 秒
A发出ACK,等待ACK到达对方的超时时间MSL,等待FIN的超时重传,也是MSL,所以如果2MSL时间内没有收到FIN,说明对方安全收到FIN。

参考文档:
[1]: https://blog.csdn.net/whoamiyang/article/details/54932488

如有描述不正确的地方,欢迎大神指点。

相关文章:

  • 2021-09-07
  • 2021-05-15
  • 2022-01-10
  • 2021-06-25
  • 2022-12-23
  • 2021-05-28
猜你喜欢
  • 2022-12-23
  • 2021-11-15
  • 2022-12-23
  • 2022-02-09
  • 2021-12-21
  • 2021-07-05
  • 2021-09-05
相关资源
相似解决方案