TCP(Transmission Control Protocol)是一种传输层协议,用于在网络中可靠地传输数据。在 TCP 协议中,为了建立一个可靠的连接,客户端和服务器之间需要进行三次握手;而为了断开一个连接,客户端和服务器之间需要进行四次断开。
SYN(Synchronize):表示同步请求/应答。携带SYN标识的称为同步报文段
ACK(Acknowledgment):表示确认号是否有效。
FIN(Finish):表示传输结束。携带FIN标识的为结束报文段。
1. 三次握手:
第一次握手:客户端向服务器发送一个 SYN(Synchronize)包,请求建立连接。这个包中包含了客户端的初始序列号。
第二次握手:服务器收到客户端的 SYN 包后,会向客户端发送一个 SYN-ACK(Synchronize-Acknowledgment)包。这个包中包含了服务器的初始序列号和对客户端序列号的确认。
第三次握手:客户端收到服务器的 SYN-ACK 包后,会向服务器发送一个 ACK(Acknowledgment)包。这个包中包含了客户端对服务器初始序列号的确认。
通过这三次握手,客户端和服务器就可以确认对方的存在,并且协商出初始序列号,从而建立起一个可靠的 TCP 连接。
2. 四次断开:
第一次断开:客户端发送一个 FIN(Finish)包,表示要关闭连接。这个包中包含了客户端的序列号。
第二次断开:服务器收到客户端的 FIN 包后,会向客户端发送一个 ACK(Acknowledgment)包,表示已经收到了客户端的关闭请求。
第三次断开:服务器发送一个 FIN 包,表示要关闭连接。这个包中包含了服务器的序列号。
第四次断开:客户端收到服务器的 FIN 包后,会向服务器发送一个 ACK 包,表示已经收到了服务器的关闭请求。
通过这四次断开,客户端和服务器就可以确认对方已经关闭了连接,从而释放相关的资源。
不过需要注意的是,在实际的网络通信中,可能会出现一些异常情况,例如丢包、超时等。为了保证连接的可靠性,TCP 协议还引入了确认、重传、排序、流控(滑动窗口)等机制。