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未能在超时前收到报...
福哥答案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的时间实际意义也不大。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
- 2025-03-07:网格图操作后的最大分数。给定一个 n x n 的二维矩阵 grid,初始时所有格子均为白色。你可以进行操作
- 2025-03-06:给定一个长度为 n 的整数组 nums,其中 n 是偶数,同时还有一个整数 k。 你可以进行一些操作,每次
- 绝了!k3s (k8s) 安装 ollama 运行 deepseek 全流程揭秘,yaml全公开
- 2025-03-04:求出硬币游戏的赢家。用go语言,给定两个正整数 x 和 y,分别代表75元和10元硬币的数量。 Alice
- 2025-03-03:切蛋糕的最小总开销Ⅱ。用go语言,你有一个大小为 m x n 的矩形蛋糕,需要将其切割成 1 x 1 的小
评论(0)