核心提示:1. 三次握手大致过程:客户端发送seq=x(随机选取一个序列号x作为自己的初始序号发送给B)、SYN = 1,客户端将自身状态设为SYN-SENT;服务端接收到seq=x的包之后,需要继续接收seq...
1. 三次握手大致过程:
客户端发送seq=x(随机选取一个序列号x作为自己的初始序号发送给B)、SYN = 1,客户端将自身状态设为SYN-SENT;
服务端接收到seq=x的包之后,需要继续接收seq=x+1的包,因此对客户端发送SYN = 1(发起一个新连接)、ack = x + 1、seq = y(自身数据包序列号)、ACK = 1(确认序号有效),同时将自身状态设置为SYN-RECEIVED;
客户端同理发送ack = y + 1、seq = x + 1、ACK = 1、SYN = 1;
2.四次挥手大致过程
第一次挥手:Client发送一个FIN=M(释放一个连接),用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ack=M+1给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN = N,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号ack=N+1,Server进入CLOSED状态,完成四次挥手。