TCP三次握手 建立连接
1)Client 将标志位 SYNC 置为 1,随机生成一个值 seq=J,并将该数据包发送给 Server,Client 进入 SYNC_SENT 状态,等待 Server 确认。
如果 Client 超时没有接收到 ACK,重发数据包。
2)Server 收到数据包后由标志位 SYNC=1 知道 Client 请求建立连接,Server 将标志位 SYNC 和 ACK 都置为 1,ack=J+1,随机产生一个值 seq=K,并将该数据包发送给 Client 以确认连接建立,Server 进入 SYN_RCVD 状态。
如果此时 Server 重新收到 Client 建立请求的消息,重发 ACK 包。
如果超时没有接收到 Client 的 ACK 响应,重发 ACK 包。
3)Client 收到确认后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack=K+1,并将该数据包发送给 Server,Client 进入 Established 状态,Server 检查 ack 是否为 K+1,ACK 是否为 1,如果正确则连接建立成功,Server 进入 Established 状态,随后 Client 与 Server 之间可以开始传输数据了。
Client 进入 Established 状态后,如果收到 Server 重发的 ACK 消息,重发自己的 ACK。
这样最后 Client 与 Server 都进入了 Established 状态&#x