新闻详情

新闻详情

首页 / 资讯中心 / 详情

2.1 广播与扫描-从底层协议到抓包分析

发布时间:2026/9/30 12:25:30来源:尧图网络
2.1 广播与扫描-从底层协议到抓包分析
目录可收获一、广播的基本概念1.1 向哪里发送广播数据包1.2 发送广播数据包的周期取多久1.3 广播数据包里包含哪些信息PDU 头PDU 有效负载二、扫描的基本概念2.1 到什么地方去扫描2.2 多久扫描一次一次扫描多久2.3 扫描的过程中需要做什么三、Wireshark抓ble数据包3.1 概览数据包时间、来源等等3.2 验证一次广播在37-39三个信道广播数据3.3 实抓广播数据包 // 注:BLE设备只广播情况下抓取的数据可收获1.BLE 广播的基本概念-向哪里发送广播数据包-发送广播数据包的周期-广播数据包里包含哪些信息物理层数据包前导码、访问地址、PDU、CRC-详解广播PDU2.BLE 扫描的基本概念-到什么地方去扫描-多久扫描一次一次扫描多久-扫描的过程中需要做什么3.*补充:wireshark抓ble数据包为调试连接问题打下基础-分析链路层 (Link Layer)数据从“接入地址”开始到“CRC”结束的原始数据以及分析-实际看到广播事件确实在 37、38、39 三个信道依次发送相同包-掌握链路层协议的核心字段PDU Type、Length等广播 (Advertising) 与扫描 (Scanning) 是 BLE 设备在进入连接前在设备发现 (Device Discovery) 阶段的工作状态。下面我们先了解与广播有关的基本概念。一、广播的基本概念广播是设备通过蓝牙天线向外发送广播数据包的过程。由于广播者在广播时并不知道环境中是否存在接收方也不知道接收方会在什么时候启动所以需要周期性地发送广播数据包直到有设备响应。在上述过程中对于广播者来说存在以下几个问题让我们一起来思考一下1.1 向哪里发送广播数据包蓝牙核心规范规定为 2.4 GHz频段。此频段是一个全球可用的免费无线电频段这也意味着 2.4 GHz频段非常拥挤可能会与其他无线通信协议发生数据冲突。蓝牙技术联盟为了解决数据冲突的问题在 BLE 上也应用了自适应跳频技术 (Adaptive Frequency Hopping, AFH) 该技术可以判断 RF 信道的拥挤程度通过跳频避开拥挤的 RF 信道以提高通信质量。在BLE 4.2 标准中 RF 信道分为两种类型如下类型数量编号作用广播信道 (Advertising Channel)337-39用于发送广播数据包和扫描响应数据包数据信道 (Data Channel)370-36用于发送数据通道数据包广播者在广播时会在 37-39 这三个广播信道中进行广播数据包的发送。在三个广播信道的广播数据包均发送完毕后可以认为一次广播结束广播者会在下一次广播时刻到来时重复上述过程。BLE 4.2 标准中广播数据包允许搭载最多 31 字节广播数据称为 “Legacy ADV”BLE 5.0 标准中支持最多 255 字节广播数据; 称为 “Extended ADV”1.2 发送广播数据包的周期取多久蓝牙标准中给出了一个明确的参数定义即广播间隔 Advertising Interval。广播间隔可取的范围为 20 ms 到 10.24 s 取值步长为 0.625 ms。 // P1341步长 后续在代码中解释广播间隔的取值决定了广播者的可发现性 Discoverability 以及设备功耗。当广播间隔取得太长时广播数据包被接收方接收到的概率就会变得很低此时广播者的可发现性就会变差。 同时广播间隔也不宜取得太短因此频繁发送广播数据需要消耗更多的电量。所以广播者需要在可发现性和能耗之间进行取舍根据应用场景的需求选择最合适的广播间隔。如果在同一空间中存在两个广播间隔相同的广播者那么有概率出现重复性的撞包 Packet Collision 现象即两个广播者总是在同一时刻向同一信道发送广播数据。由于广播是一个只发不收的过程广播者无法得知是否发生了广播撞包。为了降低上述问题的发生概率广播者应在每一次广播事件后添加 0-10 ms 的随机时延。1.3 广播数据包里包含哪些信息在 Bluetooth LE 4.2 标准给出了广播数据包的格式定义如下图所示 物理层数据包前导码、访问地址、PDU、CRC 重点是PDUProtocol Data Unit看起来非常复杂让我们来逐层分解。广播数据包的最外层包含四个部分分别是序号名称字节数功能1预置码 (Preamble)1特殊的比特序列用于设备时钟同步 // 物理层同步头不属于链路层帧的逻辑部分。无需太关注2访问地址 (Access Address)4标记广播数据包的地址 // 区分广播包和数据包广播通道37、38、39固定值 0x8E89BED6小端格式发送。当设备扫描广播通道时只有收到这个地址的包才会继续解析后面的 PDU3协议数据单元 (Protocol Data Unit, PDU)2-39有效数据的存放区域4循环冗余校验和3用于循环冗余校验在蓝牙低功耗BLE的链路层Link Layer中PDU 指的是“协议数据单元”简单理解整个广播数据包就像一封信PDU 就是信纸实际内容而前导码、访问地址和 CRC 是信封辅助传送所以我们重点了解PDU不要带偏了哦PDU 为有效数据存放的区域其结构如下序号名称字节数1头 (Header)22有效负载 (Payload)0-37PDU 头PDU 头中含有较多信息可以分为以下六个部分序号名称比特位数备注1PDU 类型 (PDU Type)4下面详解2保留位 (Reserved for Future Use, RFU)13通道选择位 (Channel Selection Bit, ChSel)1标记广播者是否支持 LE Channel Selection Algorithm #2 通道选择算法4发送地址类型 (Tx Address, TxAdd)10/1 分别表示公共地址即 IEEE 分配的全球唯一地址/随机地址用于保护隐私5接收地址类型 (Rx Address, RxAdd)10/1 分别表示公共地址/随机地址对于非定向广播此位无意义通常置 0。6有效负载长度 (Payload Length)8PDU 类型位反映了设备的广播行为。在蓝牙标准中共有以下三对广播行为可连接 (Connectable)与不可连接 (Non-connectable)是否接受其他设备的连接请求可扫描 (Scannable)与不可扫描 (Non-scannable)是否接受其他设备的扫描请求不定向 (Undirected)与定向 (Directed)是否发送广播数据至指定设备上述广播行为可以组合成以下四种常见的广播类型对应四种不同的 PDU 类型ADV_IND 对应 Advertising Indication可连接可扫描不定向PDU 类型作用是是是ADV_IND最常见的广播类型可连接的非定向广播。设备可以被任何扫描者连接。是否否ADV_DIRECT_IND可连接的定向广播。只允许一个指定的设备连接。否否是ADV_NONCONN_IND不可连接的非定向广播。仅广播数据不接受连接。可作为信标设备否是是ADV_SCAN_IND一般用于广播数据包长度不足的情况此时可以通过扫描响应向外发送额外的数据可扫描的非定向广播。允许扫描器请求更多数据。作为信标设备PDU 有效负载PDU 有效负载也分为两部分序号名称字节数备注1广播地址 (Advertisement Address, AdvA)6广播设备的 48 位蓝牙地址2广播数据 (Advertisement Data, AdvData)0-31由若干广播数据结构 (Advertisement Data Structure) 组成先看广播地址即蓝牙地址可以分为类型说明公共地址 (Public Address)全球范围内独一无二的固定设备地址厂商必须为此到 IEEE 组织注册并缴纳一定费用随机地址 (Random Address)随机生成的地址随机地址又根据用途分为两类 // 这部分简单了解一下就好了很少用类型说明随机静态地址 (Random Static Address)可以随固件固化于设备也可以在设备启动时随机生成但在设备运行过程中不得变更常作为公共地址的平替随机私有地址 (Random Private Address)可在设备运行过程中周期性变更避免被其他设备追踪若使用随机私有地址的设备要与其他受信任的设备通信则应使用身份解析秘钥 (Identity Resolving Key, IRK) 生成随机地址此时其他持有相同 IRK 的设备可以解析并得到设备的真实地址。此时随机私有地址又可以分为两类类型说明可解析随机私有地址 (Resolvable Random Private Address)可通过 IRK 解析得到设备真实地址不可解析随机私有地址 (Non-resolvable Random Private Address)完全随机的地址仅用于防止设备被追踪非常少用经过一层一层的解析终于到我们真正的广播数据了一个广播数据结构的格式定义如下序号名称字节数备注1数据长度 (AD Length)12数据类型 (AD Type)n大部分数据类型占用 1 字节3数据 (AD Data)(AD Length - n)下节将在代码中写广播数据并用NRF connect 抓取广播包数据。二、扫描的基本概念我们一起思考一下下面三个问题2.1 到什么地方去扫描对于 Bluetooth LE 4.2 设备 对于广播来说广播者只会在广播信道即编号为 37-39 的三个信道发送广播数据 所以相应的扫描者只需在广播信道接收广播数据包即可。// 主动扫描时也是在这些广播信道上发送SCAN_REQ并接收SCAN_RS。下文会解释主动/被动扫描2.2 多久扫描一次一次扫描多久第二个问题分别指向扫描窗口 (Scan Window) 和 扫描间隔 (Scan Interval) 概念。扫描窗口扫描者在同一个 RF 信道持续接收蓝牙数据包的持续时间例如扫描窗口参数设定为 50 ms 时扫描者在每个 RF 信道都会不间断地扫描 50 ms。扫描间隔相邻两个扫描窗口开始时刻之间的时间间隔所以扫描间隔必然大于等于扫描窗口。下图在时间轴上展示了扫描者的广播数据包接收过程其中扫描者的扫描间隔为 100 ms 扫描窗口为 50 ms 广播者的广播间隔为 50 ms 广播数据包的发送时长仅起到示意作用。可以看到第一个扫描窗口对应 37 信道此时扫描者恰好接收到了广播者第一次在 37 信道发送的广播数据包以此类推。广播与扫描时序示意图2.3 扫描的过程中需要做什么从目前的介绍来看似乎广播过程中广播者只发不收扫描过程中扫描者只收不发。事实上扫描行为分为以下两种被动扫描 (Passive Scanning)扫描者只接收广播数据包主动扫描 (Active Scanning)扫描者在接收广播数据包以后还向可扫描广播者发送扫描请求 (Scan Request)可扫描广播者在接收到扫描请求之后会广播扫描响应 (Scan Response) 数据包以向感兴趣的扫描者发送更多的广播信息。扫描响应数据包的结构与广播数据包完全一致区别在于 PDU 头中的 PDU 类型不同。在广播者处于可扫描广播模式、扫描者处于主动扫描模式的场景下广播者和扫描者的数据发送时序变得更加复杂。对于扫描者来说在扫描窗口结束后会短暂进入 TX 模式向外发送扫描请求随后马上进入 RX 模式以接收可能的扫描响应对于广播者来说每一次广播结束后都会短暂进入 RX 模式以接收可能的扫描请求并在接收到扫描请求后进入 TX 模式发送扫描响应。扫描请求的接收与扫描响应的发送三、Wireshark抓ble数据包3.1 概览数据包时间、来源等等3.2 验证一次广播在37-39三个信道广播数据第一次:第二次:第三次:3.3 实抓广播数据包 // 注:BLE设备只广播情况下抓取的数据1字节 前导码 物理层同步头不属于链路层帧的逻辑部分。无需太关注4字节 地址34字节 PDU负载3字节 CRCPUD负载数据
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

理光复印机扫描直存共享文件夹配置指南 2026/9/30 13:23:34

理光复印机扫描直存共享文件夹配置指南

简介:本资源是一份面向企业IT运维人员、办公设备管理员及文印中心技术人员的实用操作指南,聚焦理光品牌复印机“扫描至共享文件夹”的完整配置流程,解决多用户环境下扫描文件集中归档与权限管控的实际需求。文档以Windows系统为平台&#xff…

阅读更多 →
把伊娃搬到桌面上,稚晖君开源机器人 2026/9/30 13:23:10

把伊娃搬到桌面上,稚晖君开源机器人

由稚晖君开源的 ElectronBot。它不只是桌面摆件,而是一台能动的电脑配件。ElectronBot 是一款桌面级小机器人,外观设计的灵感来源是《机器人总动员》WALL-E 里面的伊娃。它通过 USB 直连电脑,把圆形屏幕、USB 摄像头、六轴舵机、AI 识别全部塞…

阅读更多 →
Windows Hello指纹驱动开发实战:UMDF2+WinUSB避坑指南 2026/9/30 13:23:10

Windows Hello指纹驱动开发实战:UMDF2+WinUSB避坑指南

简介:本资源是微软官方发布的《Windows Hello生物识别驱动设计指南》PDF文档,面向Windows驱动开发工程师、安全认证系统开发者及嵌入式生物识别设备厂商技术人员,系统解决WBDI(Windows Biometric Driver Interface)驱动…

阅读更多 →
DX12 PBR渲染实战:从光照模型到IBL的完整实现与调参指南 2026/9/30 13:23:10

DX12 PBR渲染实战:从光照模型到IBL的完整实现与调参指南

1. 从光照模型到PBR:为什么DX12项目绕不开这一步 很多人在DX12里跑通第一个三角形、把纹理贴上去之后,下一步就卡住了——画面看起来“能跑”,但就是不对劲。金属像塑料,塑料像纸片,光照要么死白要么死黑。这不是DX12的…

阅读更多 →
Node-Red 本地物联网中枢:可视化编程与 MQTT 数据流实战 2026/9/30 13:23:10

Node-Red 本地物联网中枢:可视化编程与 MQTT 数据流实战

1. 为什么我最终选了 Node-Red 做本地物联网中枢搞物联网项目的人大概都有过这种纠结:传感器数据上来了,想做个联动逻辑,写代码吧,改一行就得重新烧录或者重启服务;用现成的平台吧,又担心数据不在自己手里&…

阅读更多 →
深信服HCI题库:超融合工程师的隐性知识验证指南 2026/9/30 13:23:10

深信服HCI题库:超融合工程师的隐性知识验证指南

简介:本资源是面向深信服HCI(超融合基础设施)认证备考人员与IT运维工程师的专项题库资料,聚焦超融合架构原理、aSAN分布式存储、虚拟网络(VXLAN/业务网/管理网)、虚拟机优化、安全微隔离及FC/NFS存储对接等…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉