TCP 四次挥手过程?
发布于
一、过程
- 客户端发 FIN=1, seq=u,进入 FIN_WAIT_1。
- 服务端回 ACK=1, ack=u+1,进入 CLOSE_WAIT;客户端进入 FIN_WAIT_2。
- 服务端发完数据后发 FIN=1, seq=w,进入 LAST_ACK。
- 客户端回 ACK=1, ack=w+1,进入 TIME_WAIT;服务端收到后关闭。
二、为什么挥手是四次
握手时服务端 SYN+ACK 合并,挥手时 ACK 和 FIN 不能合并,因为服务端可能还有数据要发,先发 ACK 确认,数据发完再发 FIN。
三、TIME_WAIT
- 客户端回 ACK 后等待 2MSL 才关闭。
- 原因:确保最后一个 ACK 到达服务端(丢了可重传);让本次连接的所有报文在网络中消失,避免影响新连接。
- 大量 TIME_WAIT 可通过
tcp_tw_reuse优化。