【超详细】网络请求的完整生命周期

目录

1.OSI七层模型图

[✅ 总结](#✅ 总结)

2.网络请求完整生命周期(8个阶段)

阶段1.【客户端准备阶段】本地操作,无网络交互

阶段2.【核心前置】TCP三次握手,建立可靠连接,所有请求必经之路

阶段3.【可选增强握手】HTTPS专属,TLS加密握手,HTTP跳过

[✅ HTTPS的TLS加密握手核心作用](#✅ HTTPS的TLS加密握手核心作用)

[✅ TLS 加密握手](#✅ TLS 加密握手)

[✅ 关键优势](#✅ 关键优势)

阶段4.【发送请求】客户端向服务端发送业务请求数据(正式传参)

阶段5.【服务端处理阶段】服务端本地操作,无网络交互

阶段6.【返回响应】服务端回传结果,网络交互

[阶段7.【核心收尾】TCP 四次挥手,断开连接,所有请求必经之路](#阶段7.【核心收尾】TCP 四次挥手,断开连接,所有请求必经之路)

阶段8.【客户端收尾阶段】本地操作,无网络交互

3.总结

3.1.握手挥手核心知识点

3.2.网络请求完整生命周期


本篇文章来分享一下网络请求的完整生命周期。

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握手!

好了,本次的分享到这里就结束啦,希望对你有所帮助~

相关推荐
食咗未2 小时前
Linux SSH工具的使用
linux·网络·测试工具·ssh·远程登陆
AI+程序员在路上2 小时前
Linux网桥内核配置与使用
linux·网络
MQLYES2 小时前
BTC-06-网络
网络
一颗青果2 小时前
常见的网络命令
网络·智能路由器·php
fy zs2 小时前
传输层协议TCP
网络·网络协议·tcp/ip
qq_401700412 小时前
局域网通信基础——二层转发原理
网络
4***17542 小时前
计算机网络期末焚决 2024级
网络·计算机网络
NBD诺必达2 小时前
跨境直播网络专线怎么选?2026年价格解析与避坑指南
网络·tiktok网络·跨境专线·跨境直播·跨境直播网络
xin_nai2 小时前
TCP/IP协议
服务器·网络·tcp/ip