三次握手本质是要进行确认通信的双方收发数据的能力是否正常。
- 第一次握手:在客户端向服务端发起连接请求时,需要向服务端发送一个报文段,里面包含SYN标志位(SYN=1),和客户端随机生成一个序列号。
- 第二次握手:当服务端收到这个报文后发现SYN=1,就知道这是一个连接请求,然后保存客户端生成的随机序列号,然后服务端在生成一个起始序列号,然后给服务端回复一个报文,回复的报文段里包含SYN和ACK标志(SYN=1和ACK=1),序列号,确认号(ack=客户端发来的序列号+1)。
- 第三次握手:当客户端收到服务端的回复并且发现服务端回复的报文内容时,客户端就知道了服务端同意这次连接,于是就保存服务端发来的序列号,并且再回复给服务端一个报文,当服务端收到报文后,并且发现报文里有ACK=1并且序列号等于它发出的+1 就知道客户端收到报文了。就这样客户端和服务端通过TCP建立了连接