TCP 三次握手的流程
原本客户端A和服务器端B都是CLOSED状态
1.客户端请求连接
客户端A先主动打开,发送连接请求报文,将SYN标识位设为1,Sequence Number置为x(seq = x)(TCP规定当SYN = 1时,不能携带数据,x 是随机产生的一个值),然后客户端进入SYN_SEND状态,服务器端B是被动打开,然后进入LISTEN状态;
2.服务器端收到客户端请求并返回同意
服务器端B收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y(seq = y),Acknowledgement Number置为x+1(ack = x+1),然后服务器端进入SYN-RECV状态,这个状态被称为半连接状态;
3.客户端收到服务器端的同意信息,并确认
客户端A再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1(seq = x+1),Acknowledge Number置为y+1(ack = y+1)发向服务器端,最后客户端A和服务器端B都进入ESTABLISHED状态;