TCP 三次握手和四次挥手¶
一、三次握手¶
为什么¶
确认双方收发能力正常。
过程¶
- 客户端:SYN,seq=x。
- 服务端:SYN+ACK,seq=y,ack=x+1。
- 客户端:ACK,ack=y+1。
为什么不是两次¶
两次的话,客户端发的旧连接请求迟到,服务端会建连接,但客户端不接收,浪费。
二、四次挥手¶
为什么四次¶
TCP 全双工,两个方向都要关。
过程¶
- 客户端:FIN。
- 服务端:ACK。
- 服务端:FIN。
- 客户端:ACK。
TIME_WAIT¶
客户端最后等 2MSL: - 保证最后一个 ACK 到。 - 让旧连接报文消失。
三、为什么三次握手四次挥手¶
- 握手:服务端 SYN+ACK 一起发。
- 挥手:服务端收到 FIN 可能还有数据要发,先 ACK,发完数据再 FIN。
四、常见问题¶
- SYN 攻击:大量 SYN 不完成第三次握手。
- TIME_WAIT 过多:调参数。
高频
为什么三次、为什么四次、TIME_WAIT 是必考题。