TCP的三次握手和四次挥手

时间:2022-07-01 10:17:57

1. TCP的三次握手

客户端向服务端发送数据之前执行

过程

1. 客户端先向服务端发送一串同步序列编号(SYN)。发送之后客户端进入“已发送”状态;

2. 服务端收到SYN后,向客户端发送确认信息:确认字符(ACK)和SYN。发送之后服务端进入“已确认”状态。

3. 客户端收到服务端的ACK+SYN之后,明确服务端“已确认”,然后向服务端发送ACK,表明自己(客户端)已确认。

服务端在收到客户端发送的ACK之后,就知道链接已建立,可以进行数据传输了

说明

1. 经过三次握手之后,双方都已明确彼此已经做好了发送/接收数据的准备

2. TCP的三次握手,只能是客户端发起吗?服务端能发起吗?

2. TCP的四次挥手

在数据发送完成后,需要断开链接,此时就需要通过TCP的四次挥手来断开。

过程

1. 客户端发送结束标识(FIN)。客户端进入“已发送”状态。

2. 服务端接收到FIN后,开始结束,并发送ACK通知客户端自己已经开始结束。服务端进入“开始结束”状态。

3. 服务端向客户端发送FIN,表明自己已经结束。服务端进入“完成结束”状态

4. 客户端在收到服务端的FIN后,会发送ACK来告诉服务端自己已经收到来自服务端的消息。客户端进入“已确认”状态

说明

1. 服务端结束是有过程的。过程持续标准是4分钟(可调整)。所以才会有服务端在两次连续向客户端发送数据。

2. TCP四次挥手的发起者可以由服务端扮演吗?