TCP 三次握手过程?
发布于
一、过程
- 第一次:客户端发送 SYN=1, seq=x,进入 SYN_SENT 状态。
- 第二次:服务端回复 SYN=1, ACK=1, seq=y, ack=x+1,进入 SYN_RCVD 状态。
- 第三次:客户端回复 ACK=1, seq=x+1, ack=y+1,双方进入 ESTABLISHED 状态。
二、为什么是三次
- 两次无法确认客户端的接收能力和服务端的发送能力。
- 三次是最少能确认双方收发能力都正常的次数。
- 防止已失效的连接请求到达服务端导致错误建立连接。
三、为什么不是四次
服务端的 SYN 和 ACK 可以合并在一次发送,所以三次足够。
四、SYN 攻击
攻击者发送大量 SYN 但不回 ACK,占满服务端半连接队列。防护:SYN cookies、增大半连接队列、缩短 SYN 超时。