TCP三次握手与四次挥手
一、三次握手
三次握手的主要目的是建立一个可靠的连接,确保两端的发送者和接收者都准备好进行数据传输。想象成你(客户端)想要通过电话与一个朋友(服务器)进行长时间的对话。
在你们开始聊天之前,需要先确保彼此都准备好了。这个过程包括以下步骤:
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连接被完全断开。
四次挥手比三次握手多一个步骤,因为当一方完成数据发送后,仍需要接收对方可能仍在发送的数据,所以需要独立地关闭每个方向的通信。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!