三次握手:
三次握手是TCP协议建立连接时的一个重要过程。具体过程如下:
第一次握手:客户端发送一个SYN包(握手请求)到服务器,并进入SYN_SENT状态,等待服务器确认。SYN包中的SYN标志位被设置为1,同时会携带一个由客户端随机产生的序列号seq。
第二次握手:服务器收到SYN包后,必须确认客户的SYN(ACK=客户序列号+1),同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。SYN+ACK包中的SYN标志位也被设置为1,ACK标志位被设置为1,表示对客户SYN的确认,同时服务器随机产生一个序列号seq。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=服务器序列号+1),此包发送完毕,客户端和服务器进入ESTABLISHED(已连接)状态,完成三次握手。
三次握手的主要目的是确认客户端与服务器双方的发送能力和接收能力是否正常,并同步双方的序列号和确认号,从而确保TCP连接的可靠建立。完成三次握手后,客户端与服务器就可以正式开始传送数据。。
四次挥手:
在TCP/IP协议中,四次挥手是终止TCP连接的标准过程,它确保了双方都能正确地关闭连接并释放资源。如果在内网传输中试图减少这一过程到三次挥手,可能会导致连接状态不一致或其他未定义的行为,从而影响数据传输的可靠性和稳定性。
四次挥手的过程如下:
第一次挥手:客户端发送一个FIN报文,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。
第二次挥手:服务端收到FIN报文后,发送一个ACK报文,确认序号为收到序号+1,服务端进入CLOSE_WAIT状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接受。
第三次挥手:服务端发送一个FIN报文,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。
第四次挥手:客户端收到FIN报文后,客户端进入TIME_WAIT状态,接着发送一个ACK报文给服务端,确认后,服务端进入CLOSED状态,完成四次挥手。