TCP的三次握手与四次挥手
三次握手
第一次握手:client端建立连接,发送一个SYN同步包,发送之后状态变成SYN_SENT。
此次握手目的:client告知server要建立连接,server确认client可以发起请求
第二次握手:server端收到SYN之后,同意建立连接,返回一个ACK响应,同时也会给client发送一个SYN包,发送完成之后状态变为SYN_RCVD。
此次握手目的:client确认自己发起请求server可以接收到,server可以发出请求
第三次握手:client端收到server的ACK之后,状态变为ESTABLISHED,返回ACK给server端。server收到之后状态也变为ESTABLISHED,连接建立完成。
此次握手目的:serve确认自己发起请求client可以接收到
四次挥手
第一次挥手:client端向server发送FIN包,进入FIN_WAIT_1状态,这代表client端已经没有数据要发送了。
此次挥手目的:client告知server要请求的数据
第二次挥手:server端收到之后,返回一个ACK,进入CLOSE_WAIT等待关闭的状态,因为server端可能还有没有发送完成的数据。
此次挥手目的:server返回给client对应的数据
第三次挥手:等到server端数据都发送完毕之后,server端就向client发送FIN,进入LAST_ACK状态。
此次挥手目的:server告知client数据返回完毕
第四次挥手:client收到ACK之后,进入TIME_WAIT的状态,同时回复ACK,server收到之后直接进入CLOSED状态,连接关闭。但是client要等待2MSL(报文最大生存时间)的时间,才会进入CLOSED状态。
此次挥手目的:client告知server接收到对应的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!