博客
关于我
一分钟读懂低功耗蓝牙(BLE)MTU交换数据包
阅读量:253 次
发布时间:2019-02-28

本文共 1088 字,大约阅读时间需要 3 分钟。

MTU交换在蓝牙低能耗(BLE)协议中扮演着重要角色,用于建立数据传输的最大传输单元(MTU)。MTU是指在一个PDU(协议数据单元)中能够一次性传输的最大数据量。MTU交换的核心目的是确保主从双方在数据传输过程中不会因数据过大而导致传输失败。这种机制通过协商双方能够处理的最大数据包大小,确保通信效率。

在BLE协议中,MTU交换通常会在连接建立后进行。例如,传统的BLE MTU值较小(如23字节),这与其他网络如以太网(1500字节)、IEEE 802.3/802.2(1492字节)等形成鲜明对比。这些差异解释了为什么不同网络适用于不同的应用场景:如WIFI适合视频传输,传统蓝牙(BT)适合音频传输,而低功耗蓝牙(如BTLE或BLE)则主要用于控制数据传输。

MTU交换在BLE协议中主要通过ATT命令来实现。具体来说,MTU交换包括两个命令:MTU请求(MTU Request,0x02)和MTU响应(MTU Response,0x03)。以下是MTU请求和响应的详细结构:

MTU请求(MTU Request)

  • 存取地址:固定为4个字节,由连接请求数据包指定。
  • 头信息:包括序列号、下一个预期序列号、LLID(L2CAP消息或无片段L2CAP消息标识)、数据包长度等。
  • L2CAP长度:指定L2CAP包的长度,通常为3字节。
  • L2CAP通道ID:用于指定使用的L2CAP通道,通常为0x0004。
  • ATT命令:包含请求类型(如Exchange MTU Request)和相关参数。
  • MTU值:由发送方指定的接收方MTU值,例如客户端MTU为185。
  • CRC:用于数据包错误检测。
  • MTU响应(MTU Response)

  • 存取地址:与MTU请求相同。
  • 头信息:包括序列号、下一个预期序列号、LLID、数据包长度等。
  • L2CAP长度:与MTU请求相同。
  • L2CAP通道ID:与MTU请求相同。
  • ATT命令:包含响应类型(如Exchange MTU Response)和相关参数。
  • MTU值:由接收方指定的发送方MTU值,例如服务器MTU为23。
  • CRC:用于数据包错误检测。
  • MTU交换的成功不仅依赖于协议规范,还依赖于正确的硬件和软件配置。对于捕获BLE数据包的准备工作,通常需要硬件支持(如Hollong BLE侦听仪)和软件工具(如Hollong BLE协议监控分析仪)。这些工具能够帮助用户解析复杂的数据包结构,深入理解BLE通信过程。

    通过MTU交换机制,BLE协议能够在不同设备之间建立高效的通信桥梁。这一机制的理解对于优化蓝牙低能耗应用的性能至关重要。

    转载地址:http://enkp.baihongyu.com/

    你可能感兴趣的文章
    php根据年月日计算年龄
    查看>>
    RabbitMQ - 单机部署(超详细)
    查看>>
    php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
    查看>>
    php模拟发送GET和POST请求
    查看>>
    RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
    查看>>
    php模板引擎smarty
    查看>>
    php正则表达式模式
    查看>>
    php正则表达式的特殊字符含义
    查看>>
    PHP正则表达式获取武汉市的实时pm2.5数据并邮件发送phpmailer
    查看>>
    RabbitMQ + JMeter组合,优化你的中间件处理方式!
    查看>>
    PHP水仙花问题解法之一
    查看>>
    php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
    查看>>
    php注册页面实现注册后跳转页面
    查看>>
    PHP消息队列的实现方式与详解,值得一看
    查看>>
    PHP混合Go协程并发
    查看>>
    php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
    查看>>
    PHP源码安装后如何新增模块
    查看>>
    php源码详细安装步骤,linux下php源码安装步骤
    查看>>
    php漏洞tips
    查看>>
    php版Zencoding之 phpstorm
    查看>>