TCP
TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议。它的主要功能是提供可靠的、面向连接的数据传输,确保数据在网络中可靠地传输和接收。
三次握手
在使用之前需要先建立连接,主要用来确保双方通信能力、同步序列号、初始化TCP连接参数。连接过程称为“三次握手”,流程如下:
-
客户端发送SYN数据包,包含了一个初始序列号ISN(c) 给服务器,请求建立连接
a. 客户端进入SYN_SENT待确认状态
-
服务器收到数据包后返回SYN/ACK数据包给客户端
a. SYN:同意建立连接同时包含一个初始序列号ISN(s)
b. ACK:已收到数据包,将用来确认的序列号ISN(c)+1放在ACK里给客户端
c. 进入SYN_RCVD待确认状态
此处确认客户端的发送、服务端的接收功能正常
-
客户端发送ACK数据包回应
a. 将服务器发送过来的ISN(s)+1用于自己的传输序列号
b. 双方进入ESTABLISHED进入连接状态,等待传输数据
此处确认客户端接收、服务端发送功能正常
四次挥手
传输完成,为了确保双方数据都已传输完成,并且告知对方可以正常关闭连接,此次过程称为“四次挥手”,流程如下:
-
客户端向服务器发送FIN数据包,表示接下来不会再发送数据,客户端进入FIN_WAIT_1状态。
-
服务器收到数据包并且向客户端回复ACK数据包,表示确认收到客户端的关闭请求,服务器进入CLOSE_WAIT状态。
-
服务器准备好关闭连接,向客户端发送FIN数据包,表示接下来不会再发送数据,进入LAST_ACK状态。
-
客户端收到数据包,向服务器发送ACK数据包确认收到关闭请求,此时客户端进入TIME_WAIT状态,等待一段时间后关闭连接,服务器也进入CLOSED状态。