目录
[✅ 总结](#✅ 总结)
阶段2.【核心前置】TCP三次握手,建立可靠连接,所有请求必经之路
阶段3.【可选增强握手】HTTPS专属,TLS加密握手,HTTP跳过
[✅ HTTPS的TLS加密握手核心作用](#✅ HTTPS的TLS加密握手核心作用)
[✅ TLS 加密握手](#✅ TLS 加密握手)
[✅ 关键优势](#✅ 关键优势)
阶段4.【发送请求】客户端向服务端发送业务请求数据(正式传参)
[阶段7.【核心收尾】TCP 四次挥手,断开连接,所有请求必经之路](#阶段7.【核心收尾】TCP 四次挥手,断开连接,所有请求必经之路)
本篇文章来分享一下网络请求的完整生命周期。
1.OSI七层模型图
OSI七层模型图是网络请求完整生命周期的 "底层分层执行框架",网络请求的每一个步骤,都会按 OSI 七层的顺序,从上到下(发送数据)、从下到上(接收数据)逐层处理。如下图。

OSI七层模型图是网络通信的"分工说明书",把复杂的网络通信拆解成七个独立的功能层,每一层只负责一个专属任务,就像"快递公司的流水线",从"打包→运输→派送"分层协作,最终完成数据从一台设备到另一台设备的传输。
|---------------|-----------------------------------|-----------------------------------|---------------------------------|
| 层级 | 核心工作 | 对应技术/协议 | 生活类比(快递公司流水线) |
| 应用层 | 直接给用户/软件提供服务(如 "发 HTTP请求、传文件") | HTTP、FTP、IRC、SSH、DNS | 客户填快递单、收包裹(直接和用户打交道) |
| 表示层 | 处理数据的"格式/加密"(如把数据转成JSON、用HTTPS加密) | SSL、FTP、IMAP、SSH | 给包裹打包、贴易碎标签(处理数据的"包装") |
| 会话层 | 建立/管理"设备间的通信会话"(如用Socket建立连接) | Various APIs、Sockets | 快递员和客户确认"配送时间"(建立沟通会话) |
| 传输层 | 保证数据"可靠/快速传输"(选TCP还是UDP) | TCP、UDP | 选运输方式(用货车[TCP]还是飞机[UDP]运包裹) |
| 网络层 | 确定"数据要发到哪里"(通过IP地址找目标设备) | IP、IPSec、ICMP | 写快递的"收件人地址"(确定目标位置) |
| 数据链路层 | 确定"同一网络内的设备地址"(通过MAC地址找邻居设备) | Ethernet、SLIP、PPP | 写快递的"小区门牌号"(同一区域内的定位) |
| 物理层 | 把数据转成"硬件能识别的信号"(电信号/光信号) | Coax(同轴电缆)、Fiber(光纤)、Wireless(无线) | 把包裹搬上货车/飞机(硬件层面的物理传输) |
✅ 总结
1)OSI七层是网络通信的"分工标准",把复杂工作拆成7个分层;
2)每一层只做一件事:如应用层管"用户服务",传输层管"怎么传",网络层管"传到哪",物理层管"硬件传输";
3)数据发送是"从上到下封装",接收是"从下到上解封装",7层协作完成通信。
2.网络请求完整生命周期(8个阶段)
所有业务网络请求(GET/POST/下载/上传),底层都基于两个HTTP/HTTPS核心协议,而:
HTTP协议 = 基于 TCP 协议封装 + 明文传输;
HTTPS协议 = 基于 TCP 协议封装 + TLS 加密传输;
总而言之,所有网络请求,底层都是TCP协议通信,完整生命周期完全一致,所有HTTP/HTTPS请求,都必须走TCP的三次握手和四次挥手。
说明
● 客户端:手机App、网页、Unity游戏;
● 服务端:远程的接口服务器、资源服务器(比如阿里云、腾讯云服务器)
● 所有耗时、失败大概率发生在【阶段1-3】和【阶段7-8】,90%的网络问题都能在这几个阶段定位原因。
阶段1.【客户端准备阶段】本地操作,无网络交互
本地操作,没有任何网络请求发出,耗时微乎其微:
1)客户端封装本次请求的核心信息:请求方式(GET/POST/PUT/DELETE)、请求URL(接口地址)、请求头(客户端标识、数据格式、token令牌等)、请求参数(GET拼在URL后,POST放在请求体里);
2)比如Unity中写UnityWebRequest.Get(url),就是在本地构造一个GET请求的数据包,此时还没有发往网络。
● 此阶段不会出错,出错也是本地参数错误(比如 URL 写错、参数格式不对),不是网络问题。
阶段2.【核心前置】TCP三次握手,建立可靠连接,所有请求必经之路
客户端和服务端互相发送3条确认消息,完成身份验证+通道检测 ,确认双方能发数据、能收数据 ,建立可靠的双向通信链路 :
1)核心作用:没有这次握手成功,后续所有步骤都无法执行;
2)常见问题:握手超时(Connection Timeout)、连接被拒绝(Connection Refused)、无网络,90% 的网络报错都在这里。
具体握手过程可以参考【一文了解】TCP协议和UDP协议
阶段3.【可选增强握手】HTTPS专属,TLS加密握手,HTTP跳过
这个阶段是HTTP和HTTPS的核心区别,HTTP请求跳过此阶段,HTTPS请求必须执行此阶段,且紧跟在TCP三次握手之后。
● HTTP = TCP三次握手 + 明文传输数据 → 数据裸奔,容易被劫持、篡改、窃取;
● HTTPS = TCP三次握手 + TLS 加密握手 + 加密传输数据 → 全程加密,绝对安全,行业标准;
● TLS握手是加密协商握手,基于已经建立的TCP链路执行,不会重新建立连接,只是在这条链路上协商加密规则。
✅ HTTPS的TLS加密握手核心作用
客户端和服务端协商数据加密的规则和密钥,达成共识:后续所有的请求参数、响应数据,都用双方约定的加密方式加密后再传输,即使数据被劫持,劫持者拿到的也是乱码,无法解密。
✅ TLS 加密握手
● 客户端向服务端发送加密协议版本、支持的加密算法列表;
● 服务端返回选中的加密算法、服务器的数字证书(含公钥);
● 客户端验证证书的合法性(是不是正规机构颁发的、有没有过期);
● 客户端生成一个随机的对称加密密钥,用服务端的公钥加密后发给服务端;
● 服务端用自己的私钥解密,拿到这个对称密钥;
● 双方确认:后续所有数据都用这个对称密钥加密传输。
✅ 关键优势
HTTPS的加密握手是一次协商,全程复用,只要TCP连接不断开,后续传输数据都用同一个密钥,不会重复握手,不影响传输效率。
阶段4.【发送请求】客户端向服务端发送业务请求数据(正式传参)
1)客户端把准备好的请求数据(请求方式、URL、请求头、请求参数),按约定的格式(JSON/表单)打包,HTTPS加密后发送,HTTP明文发送;
2)通过TCP链路传给服务端,数据量小,耗时极短。
阶段5.【服务端处理阶段】服务端本地操作,无网络交互
服务端的纯本地操作,客户端此时处于「等待响应」状态,无网络交互:
1)服务端接收客户端的请求数据,解密(HTTPS)→ 解析参数 → 执行业务逻辑(比如查询数据库、处理登录验证、生成返回数据);
2)耗时取决于业务复杂度:简单的查询接口(比如获取用户信息)耗时1~10ms;复杂的业务接口(比如生成报表)可能耗时几百ms。
● 常见问题:404(接口地址错)、401(未授权)、500(服务端内部错误)。
阶段6.【返回响应】服务端回传结果,网络交互
服务端处理完成后,将结果返回给客户端,和阶段4对称:
1)服务端封装响应数据:状态码(200 = 成功、404 = 接口不存在、500 = 服务端错)、响应头、响应体(JSON 数据、图片二进制、文件流等);
2)HTTPS 请求会加密响应数据,HTTP 明文返回;
3)客户端接收响应数据,这是在Unity中通过request.downloadHandler.text拿到的内容。
阶段7.【核心收尾】TCP 四次挥手,断开连接,所有请求必经之路
数据传输完成后,客户端和服务端互相发送4条确认消息,友好断开TCP连接,释放双方的端口、内存资源,避免资源浪费。
● 核心作用:如果不挥手断开,会造成半开连接,服务端会一直占用资源,直到超时释放。
具体挥手过程可以参考【一文了解】TCP协议和UDP协议
阶段8.【客户端收尾阶段】本地操作,无网络交互
网络请求的最后一步,纯本地操作,也是开发中最关注的步骤:
1)客户端判断请求是否成功:根据状态码(200 = 成功)、是否有错误信息;
2)解析响应数据:HTTPS先解密,解析数据(如把JSON字符串转成实体类、把二进制转成图片/文件);
3)处理业务逻辑:比如登录成功后保存用户信息、排行榜数据展示到UI、下载的资源解压到本地;
至此,一次完整的网络请求生命周期全部结束。
3.总结
3.1.握手挥手核心知识点
● TCP 三次握手:建立可靠双向连接,所有请求的前置,确认双方能正常收发数据;
● TCP 四次挥手:断开可靠双向连接,所有请求的收尾,确认双方无数据遗漏,释放资源;
● HTTPS的TLS握手,基于TCP连接的加密协商,仅HTTPS有,确认加密规则,保证数据安全;
3.2.网络请求完整生命周期
客户端准备 → TCP 三次握手 →【HTTPS 专属:TLS 握手 】 → 发送请求 → 服务端处理 → 返回响应 → TCP 四次挥手 → 客户端解析
✅ HTTP请求完整流程 = 客户端准备 → TCP三次握手 → 发送请求 → 服务端处理 → 返回响应 → TCP四次挥手 → 客户端解析
✅ HTTPS请求完整流程 = 客户端准备 → TCP三次握手 → TLS加密握手 → 发送请求 → 服务端处理 → 返回响应 → TCP四次挥手 → 客户端解析
注意:TCP握手 > TLS握手,TLS握手必须基于TCP连接,没有TCP连接就没有TLS握手!
好了,本次的分享到这里就结束啦,希望对你有所帮助~