一、三次握手
三次握手的主要目的是建立一个可靠的连接,确保两端的发送者和接收者都准备好进行数据传输。想象成你(客户端)想要通过电话与一个朋友(服务器)进行长时间的对话。
在你们开始聊天之前,需要先确保彼此都准备好了。这个过程包括以下步骤:
1: SYN:客户端发送一个SYN(同步序列编号)报文到服务器,并进入SYN_SENT状态,等待服务器确认。
翻译成人话:你拨打电话(第一次握手): 你打电话给你的朋友,告诉他你想聊天。
2: SYN-ACK:服务器接收到SYN报文后,会回应一个SYN-ACK(同步和确认)报文,并进入SYN_RCVD状态。
翻译成人话:朋友回应(第二次握手): 你的朋友接电话,告诉你他也准备好了,并且问你是否准备好。
3: ACK:客户端收到SYN-ACK报文后,会发送一个ACK(确认)报文到服务器,完成连接建立。
翻译成人话:你确认(第三次握手): 你回复你的朋友,告诉他你确实准备好了。
二、四次挥手四次挥手的过程用于终止已建立的TCP连接,其步骤如下:
1: FIN:当数据传输完成后,通信的一方(假设为客户端)发送一个FIN(结束)报文,请求关闭连接。
翻译成人话:你说要挂电话(第一次挥手): 你告诉你的朋友你要挂电话了。
2: ACK:服务器收到这个FIN报文后,发送一个ACK报文作为响应,并进入CLOSE_WAIT状态。
翻译成人话:朋友确认(第二次挥手): 你的朋友回应说他知道了,但他还有一些话要说。
3: FIN:服务器准备好关闭连接时,发送一个FIN报文给客户端。
翻译成人话:朋友说完了(第三次挥手): 你的朋友告诉你他说完了。
4: ACK:客户端接收到这个FIN报文后,发送一个ACK报文作为最后的确认,然后进入TIME_WAIT状态等待一段时间以确保服务器接收到ACK报文。
翻译成人话;你确认(第四次挥手): 你告诉你的朋友你也知道了,然后你们两个可以挂电话了。
这四个步骤完成后,TCP连接被完全断开。
四次挥手比三次握手多一个步骤,因为当一方完成数据发送后,仍需要接收对方可能仍在发送的数据,所以需要独立地关闭每个方向的通信。
标签:挥手,ACK,报文,SYN,TCP,四次,服务器,FIN,握手 From: https://www.cnblogs.com/vicky-li/p/18350722