经典蓝牙(Classic Bluetooth / BR/EDR)--- 核心协议层4 --- 经典蓝牙(BR/EDR)服务发现层核心机制详解 文章目录蓝牙 SDP 层详解1. 概述2. 核心作用3. 架构模型4. 核心概念4.1 服务记录Service Record4.2 数据元素Data Element4.3 UUID通用唯一标识符5. 关键属性6. 工作流程步骤 1建立 L2CAP 连接步骤 2服务搜索Service Search步骤 3属性获取Attribute Retrieval步骤 4断开连接7. PDU协议数据单元8. SDP 的局限性与演进9. 实际应用场景10. 总结蓝牙 SDP 层详解1. 概述SDPService Discovery Protocol服务发现协议是蓝牙协议栈中位于L2CAP 层之上的核心协议之一负责让蓝牙设备能够发现附近设备提供的服务及其属性而无需事先了解对方设备的具体功能。协议栈位置应用层 / Profile → SDP → L2CAP → HCI → 基带 / 射频2. 核心作用功能说明服务发现查询对端设备支持哪些蓝牙服务如 A2DP、HFP、SPP 等属性获取获取服务的详细属性如协议版本、通道号、服务名称等动态适配无需预配置设备可动态发现并使用对端服务3. 架构模型SDP 采用客户端-服务器Client-Server架构┌─────────────┐ ┌─────────────┐ │ SDP Client │ ←──── L2CAP ────→ │ SDP Server │ │ (查询方) │ (PSM 0x0001) │ (提供方) │ └─────────────┘ └─────────────┘SDP Server驻留在提供服务的设备上维护一张服务记录表Service RecordSDP Client通过发送请求查询对端的服务信息4. 核心概念4.1 服务记录Service Record每个服务对应一条记录由多个属性Attribute组成用32位属性ID标识。4.2 数据元素Data ElementSDP 使用统一的数据编码格式表示所有数据基本类型包括类型描述符含义0x00Nil空0x01~0x08无符号/有符号整数1~8字节0x09~0x10UUID16/32/128位0x25文本字符串0x35数据元素序列Sequence0x36数据元素替代Alternative4.3 UUID通用唯一标识符用于唯一标识服务类型或协议16-bit UUID蓝牙 SIG 定义的标准服务如0x1101 SPP32-bit UUID扩展标准服务128-bit UUID自定义服务5. 关键属性属性 ID属性名说明0x0000ServiceRecordHandle记录句柄唯一标识一条服务记录0x0001ServiceClassIDList服务类别 UUID 列表0x0002ServiceRecordState记录状态用于缓存判断0x0003ServiceID服务唯一标识 UUID0x0004ProtocolDescriptorList协议描述符列表含 PSM/Channel 等关键信息0x0005BrowseGroupList浏览分组列表0x0006LanguageBaseAttributeIDList语言基础属性偏移0x0009BluetoothProfileDescriptorListProfile 描述符列表0x0100ServiceName服务名称0x0101ServiceDescription服务描述重点ProtocolDescriptorList0x0004通常包含RFCOMM Channel或L2CAP PSM是建立上层连接的关键。6. 工作流程步骤 1建立 L2CAP 连接SDP 使用固定的PSM 0x0001通过 L2CAP 建立面向连接的通道。步骤 2服务搜索Service SearchClient 发送SDP_ServiceSearchRequest携带目标UUIDServer 返回匹配记录的Handle 列表。Client → Server: Search for UUID 0x1101 (SPP) Server → Client: Handles [0x00010001, 0x00010002]步骤 3属性获取Attribute RetrievalClient 发送SDP_ServiceAttributeRequest或SDP_ServiceSearchAttributeRequest获取指定记录的详细属性。Client → Server: Get attributes for Handle 0x00010001 Server → Client: ProtocolDescriptorList [L2CAP, RFCOMM, Channel3]步骤 4断开连接获取所需信息后关闭 L2CAP 通道。7. PDU协议数据单元PDU 名称用途SDP_ErrorResponse错误响应SDP_ServiceSearchRequest/Response搜索服务SDP_ServiceAttributeRequest/Response获取指定记录的属性SDP_ServiceSearchAttributeRequest/Response搜索并获取属性合并操作提示ServiceSearchAttribute是最常用的组合操作可在一个请求中完成搜索属性获取。8. SDP 的局限性与演进局限说明仅发现不连接SDP 只负责发现实际连接需上层协议如 RFCOMM完成无安全机制SDP 本身不提供认证/加密依赖蓝牙配对链路查询效率低传统蓝牙中需多次交互才能获取完整信息BLE 替代方案低功耗蓝牙BLE使用GATTGeneric Attribute Profile替代 SDP基于 UUID 的属性表更高效9. 实际应用场景场景手机连接蓝牙耳机 ├─ 手机SDP Client查询耳机SDP Server ├─ 发现耳机支持 HFP0x111E和 A2DP0x110D ├─ 获取 HFP 的 RFCOMM Channel 2 ├─ 获取 A2DP 的 L2CAP PSM 0x0019 └─ 手机分别建立 HFP 和 A2DP 连接10. 总结SDP 是蓝牙生态的**“目录系统”**解决了设备间你能做什么、怎么连接你的问题。虽然其设计在经典蓝牙BR/EDR时代足够有效但在 BLE 中已被更灵活的GATT所取代。理解 SDP 对于调试蓝牙连接问题、开发自定义 Profile 或分析协议抓包如 Ellisys/Frontline至关重要。

相关新闻

最新新闻

Claude 直接生成 word 避坑全解,借助 AI 导出鸭横向测评导出方案,破解 AI 文档导出各类难题

Claude 直接生成 word 避坑全解,借助 AI 导出鸭横向测评导出方案,破解 AI 文档导出各类难题

引言 在AI内容落地办公的常态化趋势下,Claude生成的大段文本、结构化文案快速落地Word文档,已经成为文案从业者、职场文员、科研人员的高频刚需。传统手动复制排版、第三方软件格式错乱、开源工具配置繁琐等问题持续困扰使用者,「AI 导出鸭」…

2026/8/10 12:48:12
终极指南:如何用Loop免费开源工具优雅管理Mac窗口布局

终极指南:如何用Loop免费开源工具优雅管理Mac窗口布局

终极指南:如何用Loop免费开源工具优雅管理Mac窗口布局 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在macOS上进行多任务处理时,窗口管理常常成为效率瓶颈。你是否经常在代码编…

2026/8/10 12:48:12
终极指南:为Photoshop添加免费WebP支持插件

终极指南:为Photoshop添加免费WebP支持插件

终极指南:为Photoshop添加免费WebP支持插件 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 还在为Photoshop无法直接处理现代Web图像格式而烦恼吗?WebP…

2026/8/10 12:48:12
AI 导出鸭打破转化瓶颈,优化 AI 输出 word 文档全流程落地效果

AI 导出鸭打破转化瓶颈,优化 AI 输出 word 文档全流程落地效果

一、项目核心痛点与市场需求 当前各行各业文案创作、项目调研、教务备课普遍依靠大模型生成正文内容,大量职场职员、科研教师、自媒体创作者在获取模型文本后,都要落地AI输出word文档工作。线下走访中小企行政团队发现,行政人员每日借助AI生成…

2026/8/10 12:48:12
智能论文排版工具PaperXie:解决学术写作格式难题

智能论文排版工具PaperXie:解决学术写作格式难题

1. 论文排版痛点与解决方案 高校论文写作最让人头疼的环节莫过于格式调整。根据2023年学术写作调研报告显示,92%的研究生平均需要花费15-20小时在格式修改上,其中参考文献排版、页眉页脚设置、目录生成是三大"时间杀手"。 传统排版方式存在三…

2026/8/10 12:48:12
【Linux网络】从0手写Reactor反应堆(二):完善核心细节——ET非阻塞读写、分层架构与回调机制

【Linux网络】从0手写Reactor反应堆(二):完善核心细节——ET非阻塞读写、分层架构与回调机制

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C知识分享》 《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 前言:一. 前置准备&…

2026/8/10 12:43:12