三次握手:
- 第一次握手:建立连接。客户端发送连接请求报文段,将 SYN 位置为1,seq 为 x;然后,等待服务端的确认;
- 第二次握手:服务端收到 SYN 报文段。服务端收到客户端的 SYN 报文段,需要对这个 SYN 报文段进行确认,设置 ack为 x+1 ,即 seq+1;同时,自己自己还要发送 SYN 请求信息,将 SYN 位置为1,seq 为 y;服务端将上述所有信息放到一个报文段,即 SYN+ACK 报文段中,一并发送给客户端
- 第三次握手:客户端收到服务端的 SYN+ACK 报文段。然后将ack设置为y+1,向服务端发送ACK报文段,完成TCP三次握手。
简单来说,可以将其理解成,发送端(Client)向接收端(Server)发送了标有SYN的数据包,当接收端收到后需要返回给发送端信息,告知发送端我已收到可以进行链接,后发送端收到后知道接收端可以进行链接,再向接收端发送报文进行链接
四次断开:
- 第一次挥手:客户端设置 seq和ack,向服务端发送一个FIN报文段
- 第二次挥手:服务端收到了客户端发送的FIN报文段,向客户端回一个 ACK 报文段,ack 为 seq+1,服务端告诉客户端,我“同意”你的关闭请求;
- 第三次挥手:服务端向客户端发送 FIN 报文段,请求关闭连接,
- 第四次挥手:客户端收到服务端发送的 FIN 报文段,向服务端发送 ACK 报文段,服务端收到客户端的 ACK 报文段以后,就关闭连接;此时,客户端等待后依然没有收到回复,则证明客户端已正常关闭,那好,客户端也可以关闭连接了。