tcp三次握手位于OSI七层协议(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)中的传输层,用于建立主机间可靠的连接。
连接中用于交互和确认是通过seq、ack等序号以及SYN、ACK等标志位。
三次握手:
第一次握手:客户端发送SYN(seq=j)包请求服务器连接,同时进入SYN-SENT状态,并等待服务器回应。
第二次握手:服务其接受到SYN包,并发送一个ack=j+1的ACK包和SYN包,即SYN+ACK包回复客户端,此时服务器进入SYN-RECV状态。
第三次握手:客户端接收到SYN+ACK包,此时再发送ACK包到服务器,发送完毕进入连接状态,完成三次握手。
四次挥手:
第一次挥手:客户端发送FIN报文和seq序列号,进入FIN-WAIT-1状态
第二次挥手:服务器收到请求,发出ACK报文,ack序号和seq序号,此时服务器进入CLOSE-WAIT状态。TCP需要通知高层应用客户端的断开连接请求,做出相应的处理或回传数据。
第三次挥手:客户端收到ACK确认请求后,进入FIN-WAIT-2状态,等待服务器发送连接释放报文。服务器做出相关处理后发送最后的连接FIN释放报文,此时服务器进入LAST-ACK(最后确认状态)
第四次挥手:客户端收到FIN报文后必须发送最后的ACK报文,此时进入TIME-WAIT状态。服务器收到后进入CLOSED状态。