zoukankan      html  css  js  c++  java
  • 2020-12-08:TIME_WAIT的等待时间为什么是2MSL?

    福哥答案2020-12-08:
    [答案来自此链接:](http://bbs.xiangxueketang.cn/question/646)
    这里假设主动关闭方为A,被动关闭方为B,TIME_WAIT状态是在主动关闭方A接收到主动关闭的FIN报文的ACK报文后,此时被动关闭方B会发出FIN报文,A在收到FIN报文后会发出Last_ack报文。假如A在发出Last_ack报文后,B未能在超时前收到报文,就需要重新发送FIN报文。如果A在发出Last_ack报文后直接关闭连接,那么B重发的Fin报文到达A后就可能被错误接收,因此A必须等待,那么这个时间应该为多长,考虑的主要是不对后边新建立的连接产生影响。那么考虑最坏的情况A在发出Last_ack后,经过MSL的时间才到大B,B就可以正常断开连接了,而B在接收到这个包前一刻重传了Fin包,也经过MSL的时间才到达A,那么A就能在2MSL的时间等到B的最后一个重传Fin包并处理掉,当然B的重传时间肯定小于MSL,因此A收到B重传的Fin包肯定小于2MSL。另外MSL也是一个经验值,不同的系统实现默认值也不同,现在的协议栈已经能够处理重复序列号的情况,因此2MSL的时间实际意义也不大。

  • 相关阅读:
    原型模式
    浅复制和深复制
    适配器模式
    外观模式
    模板方法
    建造者模式
    代理模式
    Centos7重新安装yum
    关于mongodb创建索引的一些经验总结(转)
    MongoDB查询语句(转)
  • 原文地址:https://www.cnblogs.com/waitmoon/p/14106042.html
Copyright © 2011-2022 走看看