news 2026/4/23 0:11:07

一文搞懂 低功耗蓝牙BLE 中的 ATT、GATT、MTU 与 20 字节限制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文搞懂 低功耗蓝牙BLE 中的 ATT、GATT、MTU 与 20 字节限制

在做手机 / 前端 / 小程序 与 BLE 设备通信时,很多人都会遇到这些疑问:

  • 为什么 BLE 一次只能传20 字节

  • JSON 为什么一用就超限?

  • MTU 到底是什么,调了有什么用?

  • ATT、GATT 老是一起出现,它们到底有什么区别?

如果你也被这些问题绕晕过,这篇文章就是为你准备的。本文会用尽量通俗、工程视角,把这些概念一次讲清楚。

一、先给结论(让你心里有个数)

不做任何额外配置的情况下:

  • BLE单次稳定可传输数据:20 字节

  • 原因不是手机、不是代码,而是底层协议限制

BLE 4.2+ 并成功协商 MTU的情况下:

  • 单包常见最大有效数据:244 字节

  • 但依然不适合大 JSON,只是“缓解”,不是“解决”

这些限制,都和 ATT、GATT、MTU 有关

二、BLE 为什么不能像 HTTP / Socket 那样随便传?

因为 BLE 的设计目标就不是“高速大数据传输”,而是:

  • 低功耗

  • 低速

  • 设备简单

所以 BLE 在协议设计上:

  • 数据包很小

  • 规则很严格

  • 强调“短、快、结构化”

这也是为什么:

BLE 非常不适合直接传 JSON 文本

三、ATT 是什么?(真正限制你的东西)

1️⃣ ATT 的全称

ATT(Attribute Protocol),中文一般叫:

属性协议

一句话理解:

ATT 规定了 BLE 里“数据怎么读、怎么写、一次能传多少”

2️⃣ ATT 的核心思想:一切都是 Attribute

在 ATT 看来,设备里的所有数据都是一条条Attribute(属性)

  • 每条 Attribute 都有一个编号(Handle)

  • 一个类型(UUID)

  • 一个值(Value)

  • 以及访问权限

ATT 不关心:

  • 你传的是不是 JSON

  • 是不是字符串

  • 代表什么业务含义

它只关心一件事:

这个包装不装得下?

3️⃣ 为什么默认只能传 20 字节?

关键点来了 👇

  • ATT 有一个概念:ATT MTU

  • 默认ATT MTU = 23 字节

  • 其中3 字节是协议本身的开销

所以:

23 - 3 = 20 字节

👉 这就是“BLE 单包 20 字节限制”的真正来源。

四、MTU 是什么?为什么能变成 244 字节?

1️⃣ MTU 的含义

MTU(Maximum Transmission Unit)

一次数据包允许承载的最大字节数

在 BLE 里,说的通常是ATT MTU


2️⃣ MTU 协商(BLE 4.2+)

从 BLE 4.2 开始:

  • 手机和设备可以协商 MTU

  • 双方各报一个最大值

  • 最终取两者的最小值

常见情况:

MTU实际可用数据
2320
6461
128125
247244

👉 所以大家常说:

BLE 常见最大单包有效数据是 244 字节

但前提是:

  • 手机支持

  • 设备支持

  • 协商成功

五、GATT 是什么?(你真正“在用”的东西)

如果只有 ATT,会有一个问题:

“我读到一条数据,但它代表什么?”

于是就有了GATT


1️⃣ GATT 的全称

GATT(Generic Attribute Profile)

通用属性规范

它不是传输协议,而是:

规定 Attribute 应该如何组织、如何被使用

2️⃣ GATT 引入的核心概念

GATT 在 ATT 之上,定义了:

  • Service(服务):一组相关数据

  • Characteristic(特征):真正存数据的地方

  • Descriptor(描述符):对特征的补充说明

你在代码里操作的:

  • serviceId

  • characteristicId

👉 都是GATT 概念

3️⃣ 一个直观对比

同一条数据:

  • ATT眼里:

    一段二进制值

六、ATT 和 GATT 的核心区别(一定要分清)

对比点ATTGATT
层级底层上层
作用怎么传数据数据怎么组织
是否限制 20 字节✅ 是❌ 否
是否懂业务❌ 不懂✅ 懂
你是否直接操作

一句话总结:

你操作的是 GATT,但真正限制你的是 ATT。

七、为什么 BLE 不推荐直接用 JSON?

1️⃣ JSON 天生“占字节”

{"cmd":"open","time":123456}

  • 字段名多

  • 字符多

  • 冗余高

在 20 字节限制下,非常容易超。

2️⃣ 必然带来的问题

  • 拆包 / 分包

  • 包序号

  • 重组逻辑

  • 出错处理

👉 复杂度直线上升。


3️⃣ BLE 更推荐的做法

  • 二进制协议

  • 命令字 + 参数

  • 固定长度或简单结构

例如:

[0x01, 0x58]

而不是 JSON 文本。

八、把所有关系串起来(很重要)

真实的数据流是这样的:

你的业务数据

GATT(服务 / 特征)

ATT(读 / 写 / 通知,受 MTU 限制)

底层蓝牙链路

所以:

  • 20 字节问题 →ATT + MTU

  • 服务 / 特征 →GATT

  • JSON 是否合适 →协议设计问题

九、一句话终极总结

ATT 是 BLE 的“运输层”,决定一次能传多少、怎么传;
GATT 是 BLE 的“数据使用规范”,决定数据如何组织、如何被理解。
默认 ATT MTU 为 23 字节,导致单包有效数据只有 20 字节;
BLE 4.2+ 可通过 MTU 协商提升到常见的 244 字节,但 BLE 依然更适合短小、结构化的数据,而不是直接传 JSON。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 12:37:23

量子 Agent 如何实现毫秒级优化?:深入解析5大核心算法突破

第一章:量子 Agent 的毫秒级优化挑战在当前高并发、低延迟的分布式系统中,量子 Agent 面临着前所未有的性能压力。其核心任务是在毫秒级响应时间内完成复杂的状态评估与策略推导,这对底层计算架构和算法效率提出了极致要求。实时性瓶颈的根源…

作者头像 李华
网站建设 2026/4/21 12:43:09

12.18 中后台项目-权限管理

![[1280X1280 (46).PNG]] ![[1280X1280 (48).PNG]] ![[1280X1280 (50).PNG]] 权限管理总结 ![[download_image.jpeg]] 模拟路由信息数据 adminRouter.json [{"path": "/dashboard","component": "/layout/index.vue","title"…

作者头像 李华
网站建设 2026/4/17 4:20:13

2025届计算机专业大学生,敢问路在何方?

目录 互联网裁员 计算机专业本科生就业情况 计算机专业转角遇到爱 网络安全行业特点 如何入门学习网络安全 零基础入门 互联网裁员 这两天,关于大厂,特别是互联网大厂裁员、优化员工的新闻再次受到关注。 从裁员情况看,谷歌、亚马逊…

作者头像 李华
网站建设 2026/4/22 11:30:20

计算机科学与技术,软件工程,网络空间安全这三个专业考研怎么选?

前言 三个专业本质上都是万金油专业。三个专业间本身都可以横跳找工作。只是人事部可能会关心招人要求里会有点要求,这也是写个人学历或工作简历问题。除了专项课题研发外,几乎没有什么差别。 只能根据你的未来工作打算来规划 1)考研后继续…

作者头像 李华
网站建设 2026/4/18 11:29:14

SmokeAPI终极指南:完全解锁Steam游戏DLC的免费方案

SmokeAPI终极指南:完全解锁Steam游戏DLC的免费方案 【免费下载链接】SmokeAPI Legit DLC Unlocker for Steamworks 项目地址: https://gitcode.com/gh_mirrors/smo/SmokeAPI 还在为Steam游戏的高价DLC发愁吗?想要体验完整游戏内容却不想掏空钱包&…

作者头像 李华
网站建设 2026/4/21 15:45:27

2026年如何成功入行网络安全?这份精准学习与择业指南请收好

在2026年,随着科技的飞速发展,人类社会已经全面迈入了数字化时代。万物互联、人工智能、大数据、云计算等前沿技术正以前所未有的速度改变着我们的生活和工作方式。然而,正如硬币的两面,这一数字化的浪潮也带来了前所未有的网络安…

作者头像 李华