工作流程:
-
连接建立(三次握手):
-
客户端发送 SYN 请求。(请求建立连接) 客户端向服务器发送一个 SYN(同步)报文段,表示客户端请求建立连接。这个报文段中包含了客户端的初始序列号(ISN)。
-
服务器回复 SYN-ACK。(表示接收到了客户端的连接请求) 服务器收到客户端的 SYN 后,响应一个 SYN-ACK 报文段,表示同意建立连接,并且返回一个服务器的初始序列号。
-
客户端回复 ACK,连接建立。(表示确认连接已建立) 客户端收到服务器的 SYN-ACK 后,发送一个 ACK(确认)报文段,表示客户端确认连接建立,且序列号是服务器的序列号 + 1
-
-
数据传输:发送数据包,并等待接收方确认。
-
连接关闭(四次挥手):当数据传输完毕后,TCP 会进行连接终止。
-
客户端发送 FIN 请求;(表示客户端已经没有数据要发送了,但仍然可以接收数据) 当客户端不再需要与服务器通信时,客户端发送一个 FIN(终止)报文段,表示客户端请求关闭连接。
-
服务器响应 ACK;(此时服务器仍然可以继续向客户端发送数据) 服务器收到客户端的 FIN 后,发送一个 ACK 报文段,表示服务器确认客户端请求关闭连接。
-
服务器发送 FIN;(表示服务器也没有数据要发送了,准备关闭连接) 服务器完成数据传输后,发送一个 FIN 报文段,表示服务器也请求关闭连接。
-
客户端响应 ACK,连接关闭。(此时连接已被关闭,客户端和服务器都完成了数据的传输和连接的断开)客户端收到服务器的 FIN 后,发送一个 ACK 报文段,表示客户端确认服务器的关闭请求。
-
注:三次握手
注:四次挥手