三次握手是指建立TCP连接协议时,需要在客户端和服务器之间发送三个包,握手过程中传送的包里不包含数据,三次握手完毕之后,客户端与服务器才正式开始传送数据。
第一次握手:客户端发送第一个包,其中SYN标志位为1(表示请求连接),seq=0,ACK=0(针对SYN的确认应答).此时客户端进入SYN发送状态,等待服务器的确认。
第二次握手:服务器收到这个包之后发送一个回应包,其中SYN=1,seq=0,ACK=1,此时服务器进入SYN接收状态。
第三次握手:客户端接收到服务器的回应包之后,向服务器发送第三个包,SYN=0(招呼已经打完),seq=1(确认收到服务器发来的seq=0的数据,接下来请求发1),ACK=1(seq+1).此包发送完毕,客户端和服务器进入ESTABLISHED成功建立状态,完成三次握手。
四次挥手是指终止TCP连接协议时,需要在客户端和服务器之间发送四个包。
第一次挥手:客户端向服务器发送第一个请求关闭连接的包,其中FIN=1,seq=x,ACK=y。
第二次挥手:服务器收到客户端发来的FIN包后,向客户端发送一个FIN=0,seq= y,ACK=x+1的包,确认客户端发来的FIN请求。
第三次挥手:服务器向客户端发送FIN=1,seq=y,ACK=x+1的包请求切断连接。
第四次挥手:客户端向服务器发送FIN=1,seq=x+1,ACK=y+1的包。至此,完成四次挥手。