【面试联盟】让您出道即巅峰, tcp为什么需要TIME_WAIT

tutengdihuang · · 301 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### **如何加入我们** ### 联系方式 vx: tutengdihuang ### 或者加群 <img src="https://user-images.githubusercontent.com/31843331/156959323-7be34628-0955-494b-8f3c-ab5f4354d21c.png" height="100" width="75"> ### **tcpip为什么需要TIME_WAIT** - 客户端等待两个最大数据段生命周期(Maximum segment lifetime,MSL)的时间后也会进入 CLOSED 状态 - TIME_WAIT一定是发生在主动关闭的一方,主动关闭一方需要等待2*MSL时间才会最终关闭 - 原因: - 1. 防止被动关闭方的延迟数据被人窃取。 - 如果sever之前发送的数据sequece10001在网络中,还没有被接收 - client1 time_wait后迅速关闭 - client2 正好用了client1的端口,这样client2就接收了这个sequece10001,就给client2带来了麻烦 - 2. 防止被动关闭方没有收到最后的ACK - 如果client1 time_wait 不够长, - 在serverlast—ack 状态还没收到client最终确认ack之前,client2 以相同端口接入网络 - 开始和sever正常syn,sync ack, ack - server 也认为是合法的可以和client正常通信,则client1的链接没有关闭 - 为什么是2msl - 等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包 - 主动关闭端接到重发的FIN包后可以再发一个ACK应答包

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

301 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传