### **如何加入我们**
### 联系方式 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应答包
有疑问加站长微信联系(非本文作者))