BT-5の蓝牙技术原理のBT协议の蓝牙核心协议の服务发现协议(SDP)

蓝牙技术原理のBT协议の蓝牙核心协议の服务发现协议-SDP

在这里插入图片描述

1. 概述

服务发现(Service Discovery)就是对网络中的设备和服务定位,收集这些设备和服务的信息。

SIG组织规定SDP必须具备的功能有:

  • 保证客户可以基于服务的特定属性查找所需的服务;
  • 允许客户可以基于服务的类来发现服务;
  • 实现在对整个服务一无所知的条件下浏览服务:
  • 实现一种机制保证在以下两种情况下新服务可以被发现:设备进入客户射频范围内以及客户范围内的设备提供新服务;
  • 实现一种机制保证在以下两种情况下可以判断服务不可用:设备离开客户射频范围内以及客户范围内的设备不再提供该项服务;
  • 保证服务、服务的类以及服务的属性唯一;
  • 允许一台设备上的客户无需依靠第三台设备而发现另一台设备上的服务;
  • 适合于在简单的设备上实现;
  • 实现一种机制来发现设备提供服务内容的变化,以减少客户与服务器间的数据交换;
  • 支持中间代理对服务发现信息的缓存,以提高服务发现的速度;
  • 与传输层无关;
  • 支持逻辑链路控制与适配层(L2CAP)作为其传输层;
  • 允许可供其它服务发现协议访问的服务被发现及使用;
  • 支持新服务的创建和定义,而无需权威机构的注册登记。

2. 服务记录

服务器提供服务记录列表,它描述了服务器提供的全部服务。其中的每条服务记录包含此项服务的全部信息。客户通过发送 SDP请求获取服务记录。SDP 提供了发现服务及其属性(包括相关服务接入协议)的机制,但不提供使用这些服务的机制。
在这里插入图片描述
每一个服务的属性描述了服务的一个特征,一个服务属性由两部分组成:属性标识符(Attribute ID)和属性值(Attribute Value)。

属性标识符是在服务记录中用于区分不同属性的16bitS无符号整数。所有属于同一服务类的服务的属性标识符具有同样的意义。SDP中通常用数据元(DE)来表示属性标识符,DE由头字段和数据字段组成,头字段指明了数据的类型和长度。属性值是不定长的数据,其意义由其相应的属性标识符决定。属性值在SDP中也用数据元来表示。

SDP定义了一些通用的属性,其中有两个属性是所有服务记录必须包括的。这两个属性是:一是服务记录句柄属性,其I D为Ox0000,属性值的类型为32bitS无符号整数,服务记录句柄在一个SDP服务器内唯一的标识每一个服务记录;二是服务类标识符列表属性,其 ID 为Ox0001,属性值的类型为数据元序列(DES),每一个数据元是一个代表服务所属的类的通用唯一标识符
(UUID)。其它诸如服务标识符等属性为可选的。

3. 协议数据单元

在这里插入图片描述
每一个PDU由PDu头和PDU特定的参数组成。
PDU 头部包括三个域:PDU标识符(PDU ID)、事务标识符(Transaction ID)和参数长度。

  • PDU ID:用来区分PDU的类型,以此来判断PDU的意义及正确解析其参数。
  • Transaction ID:用来区分不同的请求PDU,收到响应PDU时根据其Transaction ID来判断是否为相应请求PDU的响应,SDP
    客户选择与已有请求PDU所含TransactiOn ID不同的任意值作为一个请求PDU的TransactiOn ID,响应PDU所含的Transaction ID必须与其对应的请求PDU的Transaction ID相同。
  • 参数长度字段:表示了PDU所带参数的总长度(以字节为单位)。整个PDU的格式如图3所示。

协议中定义了三种事务,分别是:服务搜索事务, 服务属性事务, 服务搜索及属性事务。

  • 服务搜索事务(Service search Transaction):这种事务用来搜索服务,由服务搜索请求PDU和服务搜索响应PDU完成。在请求PDU中包含了数据元序列表示的搜索模式,其数据元为UUID;响应PDU包含了一组服务记录句柄。

  • 服务属性事务(Service Attribute Transaction):在客户拥有服务记录句柄的前提下查询与服务有关的信息,由服务属性请求PDU和服务属性响应PDU完成。在请求PDU中包含了服务记录旬柄以及要查询的属性标识符;响应PDU包含了服务属性除了上面涉及的六种PDU外,协议中还定义了出错响应PDU(SDP ErrorResponSe PDU),SDP服务器在收到不正确的请求PDU或由于某种原因无法正确响应请求PDU时,向客户发送出错响应PDU,在PDU的参数中指明出错的原因。正是通过以上这些PDU,客户可以根据服务的类搜索服务并查询服务的属性,客户也可以在事先不知道任何情况的前提下进行服务的浏览。

  • 服务搜索及属性事务(Serrice Search Attribute Transaction):这种事务将前两种事务在一次事务中完成,由服务搜索及属性请求PDU和服务搜索及属性响应PDU完成。

  • 除了上面涉及的六种PDU外,协议中还定义了出错响应PDU(SDP ErrorResponSe PDU),SDP服务器在收到不正确的请求PDU或由于某种原因无法正确响应请求PDU时,向客户发送出错响应PDU,在PDU的参数中指明出错的原因。

正是通过以上这些PDU,客户可以根据服务的类搜索服务并查询服务的属性,客户也可以在事先不知道任何情况的前提下进行服务的浏览。

4. SDP PDU数据实例

客户和服务器之间交换SDP_PDU 是一种简单的处理事务,典型SDP 处理包括含入下步骤:
(1)客户发送一个请求以寻求其感兴趣的服务,服务器用一个符合客户请求的服务的句柄作为响应。
(2)客户使用在第一步获得的服务句柄构造一个新的请求,以获得其感兴趣的服务的额外的服务属性。
在这里插入图片描述
SDP_PDU 通用格式:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值