第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;服务器
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN(syn=k)包,即SYN+ACK包,此时服务器进入SYN_RECV状态。app
第三次握手:客户端接受服务器SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。ide
注意:握手的过程当中传送的包里不包含数据,三次握手完毕后,客户端和服务器才正式开始传送数据,理想状态下,TCP一旦创建链接,在通讯双方中的任何一方主动关闭链接以前,TCP链接都将一直保持下去。断开链接是服务器和客户端都可以主动的发起断开TCP链接的请求,断开过程须要通过四次握手。spa
三次握手示意图。orm
四次挥手示意图blog