2026-01-03 08:46:51
TCP“三次握手”与“四次挥手”
TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP连接中,“三次握手”用于建立连接,而“四次挥手”则用于断开连接。
一、TCP“三次握手”
TCP“三次握手”是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。具体过程如下:
第一次握手:
客户端向服务器发送一个SYN(同步序列号)包,请求建立连接。
这个包中包含了客户端的初始序列号(Sequence Number),用于后续的数据传输和确认。
第二次握手:
服务器收到SYN包后,回复一个SYN-ACK包,确认收到请求,并向客户端发送自己的SYN请求。
SYN-ACK包中包含了服务器的初始序列号,以及对客户端SYN包的确认(ACK,即确认号),确认号是客户端初始序列号加1。
第三次握手:
客户端收到服务器的SYN-ACK包后,发送一个ACK包确认收到服务器的请求。
此时,连接建立完成,双方可以开始数据传输。
ACK包中包含了客户端对服务器SYN-ACK包的确认号,即服务器初始序列号加1。
通过这三次握手,客户端和服务器都确认了对方的接收和发送能力,以及初始序列号,从而建立了可靠的连接。
二、TCP“四次挥手”
TCP“四次挥手”是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。具体过程如下:
第一次挥手:
发送方(通常是客户端)发送一个FIN包,表示不再发送数据。
这个包中包含了发送方的序列号,用于标识这个FIN包。
第二次挥手:
接收方(通常是服务器)收到FIN包后,发送一个ACK包确认。
这个ACK包中包含了接收方对发送方FIN包的确认号,即发送方序列号加1。
此时,接收方还可以继续发送数据给发送方,但发送方已经不会再发送数据了。
第三次挥手:
当接收方也准备好断开连接时,它发送一个FIN包给发送方。
这个FIN包中包含了接收方的序列号。
第四次挥手:
发送方收到接收方的FIN包后,发送一个ACK包确认。
这个ACK包中包含了发送方对接收方FIN包的确认号,即接收方序列号加1。
此时,连接完全断开,双方都不再发送数据。
通过这四次挥手,客户端和服务器都确认了对方的断开请求,并完成了连接的断开过程。
总结:
以下是TCP“三次握手”和“四次挥手”的流程图:


这些流程图直观地展示了TCP连接建立和断开的整个过程。