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四次挥手的发起者可以由服务端扮演吗?