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的时间实际意义也不大。
公众号:福大大架构师每日一题
分类:
福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具