一、三次握手
所谓三次握手即建立 TCP 连接,就是指建立一个TCP 连接时,需要客户端和服务端总共发送 3 个包确认连接的建立。在 socket 编程中,这一过程由客户端执行 connect 来触发。整个流程如下
TCP 三次握手图
1、第一次握手:Client 将标志位 SYN 置为 1,随机产生一个值 seq= x,并将该数据包发送给 Server, 然后 Client 进入 SYN_SENT 状态,等待 Server 确认。
2、第二次握手:Server 收到数据包,由 SYN = 1 知道 Client 请求建立连接, Server 将标志位 ACK ,SYN 都置为 1,ack = x+1,随机产生一个值 seq = y,并将该数据包发送个给 Client 以确认连接请求 , Server 进入 SYN_RECVD 状态。
3、第三次握手:Client 收到确认后,检查 ack 是否是为 y+1 ,如果正确则将标志位 ACK 置为 1,ack = y+1,并将该数据包发送给 Server ,Server 检查确认 ack 是否为 y+1 ,ACK 是否为 1,如果正确,则连接建立成功。Client 和 Server 进入 E