三次握手(Three-way handshake)是指在TCP/IP协议中,为了保证数据的可靠传输,建立一个TCP连接至少需要客户端和服务器端各进行三次握手。三次握手的目的是建立可靠的通信信道,使数据能够准确无误的传输。
细节内容我们来看下面的图像和例子。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;syn:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j 1),同时自己也发送一个SYN包(syn=k),即SYN ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN ACK包,向服务器发送确认包ACK(ack=k 1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
三次握手简单来说就是:客户端发送一个SYN包到服务器,服务器接收到了;服务器发回一个SYN ACK包,表示确认客户的SYN;客户端再回传一个ACK,表示握手成功。