三向握手设置概念:根据TCP头字段,有三个重要的标识符ACK,SYN,FINACK:验证字段SYN:位数设置为1,表示已建立TCP连接FIN:数量位的设置为1,表示TCP连接已断开三向握手过程描述:1.客户端发送请求消息以建立TCP连接,其中包含seq序列号,该序列号由发送方随机生成,消息中的SYN字段设置为1,表示需要建立TCP连接。 (SYN = 1,seq = x,x是随机生成的值)2.服务器响应客户端发送的TCP连接请求消息,该消息包含由响应者随机生成的seq序列号,并设置SYN为1,将生成一个ACK字段。 ACK字段的值是客户端发送的序列号seq加1以进行答复,因此,当客户端接收到该信息时,它知道其TCP建立请求已被验证。 (SYN = 1,ACK = x + 1,seq = y,y是随机生成的值)这里,ack加1可以理解为确认与谁建立连接。 3.客户端收到服务器发送的TCP建立验证请求后,将其序列号加1,然后再次答复ACK验证请求,将服务器发送的seq加1。 (SYN = 1,ACK = y + 1,seq = x + 1)摇晃四次,摇晃四次。流程描述:1.客户端发送一个TCP连接请求消息,该消息包含seq序列号,该序列号由发送者随机生成,并且消息中的FIN字段也设置为1,表明需要进行TCP连接断开连接。 (FIN = 1,seq = x,x由客户端随机生成)2.服务器将回复客户端发送的TCP断开连接请求消息,其中包含seq序列号,该序列号由响应终端和服务器随机生成。将生成ACK字段,该ACK字段的值是客户端发送的seq序列号加1以进行答复,因此,当客户端接收到该信息时,它将知道其TCP断开连接请求已得到验证。 (FIN = 1,ACK = x + 1,seq = y,y由服务器随机生成)3.服务器响应客户端的TCP断开连接请求后,它将不会立即断开TCP连接,并且服务器将在断开连接之前,确保已传输所有传输到A的数据。一旦确认了数据传输,答复消息的FIN字段将被设置为1,并且将生成一个随机的序列号。 (FIN = 1,ACK = x + 1,seq = z,z由服务器随机生成)4.客户端收到服务器的TCP断开连接请求后,它将回复服务器的断开连接请求,包括随机生成的seq字段和ACK字段,ACK字段将向服务器的TCP断开连接请求的seq加1,以完成服务器请求的验证答复。 (FIN = 1,ACK = z + 1,seq = h,h由客户端随机生成)到目前为止,TCP断开连接的4次浪潮已完成11个状态1.首先,服务器和客户端的状态在建立连接之前都是关闭的; 2.服务器在创建套接字后开始监视并进入LISTEN状态; 3.客户端请求建立连接,并向服务器发送SYN消息,客户端的状态变为SYN_SENT。 4.服务器收到客户端发送的ACK和SYN报文后,将消息发送给客户端,此时服务器状态为SYN_RCVD; 5.然后,客户端接收到ACK,SYN并发送ACK到服务器,客户端状态为ESTABLISHED。 6.服务器从客户端收到ACK,然后建立。此时,三向握手已完成并建立了连接!由于TCP连接是全双工的,因此断开连接比建立连接要麻烦一些。 1.客户端首先向服务器发送FIN消息,请求断开连接,其状态为FIN_WAIT1; 2.服务器收到FIN后,将ACK发送到客户端,并且服务器的状态与CLOSE_WAIT相邻; 3.客户端收到ACK,然后进入FIN_WAIT2状态,此时连接已断开一半。如果服务器有要发送给客户端的数据,它将继续发送;否则,服务器将继续发送。 4.在发送数据之前,它将发送FIN消息,此时服务器进入LAST_ACK状态。 5.客户端收到服务器的FIN后,它将立即将其ACK发送到服务器,此时客户端进入TIME_WAIT状态; 6.在另一个2MSL之后,它进入CLOSED状态。从客户端收到ACK后,服务器进入CLOSED状态。到目前为止,仍然没有出现一种状态: