作者:Sam (甄峰) sam_code@hotmail.com
Service DiscoveryProtocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或BluetoothSDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetoothclient发现可用bluetoothserver服务和它们的特征的方法。这个协议定义了客户如何能够寻找基于特定属性的服务而不让客户知道可用服务的任何知识。SDP提供发现新服务的方法,在当客户登录到正在操作的蓝牙服务器的一个区域时是可用的时。
Servicediscovery机制提供client应用程序侦测server应用程序提供的服务的能力,并且能够得到服务的特性。服务的品质包含服务type或服务class.
SDP也提供SDP server与SDP client之间的通讯。SDPserver维护着一个服务条目(servicerecord)列表.每个服务条目描述一个单独的服务属性。 SDPclient可以通过发送SDP request来得到服务条目。
如果一个client或者依附于client之上的应用程序决定使用某个service.它创建一个单独的连接到service提供者。 SDP只提供侦测Service的机制,但不提供如何利用这些Service的机制。Sam觉得,这里其实是说:SDP只提供侦测Service的办法,但如何用,SDP不管。
每个Bluetooth Device最多只能拥有一个SDP Server。如果一个BluetoothDevice只担任Client,那它不需要SDP Server。但一个Bluetooth Device可以同时担当SDPServer和SDP client.
Service Record(Service 条目):
一个service是一个实体为另一个实体提供信息,执行动作或控制资源。一个service可以由软件,硬件或软硬件结合提供。
所有的Service信息都包含于一个Service Record内。一个ServiceRecord
在一个SDP Server内,每个Service Record拥有一个32-bit的唯一性数据。通常,这个唯一性只是在每个SDPServer内部。 如果SDP Server S1 和SDP Server S2拥有同样的一个ServiceRecord。那他们在不同SDP Sever内的独特数值并不一定相同。
SDP在SDP Server增加或减少Service Record时,并不会通知SDP client.
Service Attribute(Service属性):
每个Service属性描述servcie的特性.一个Service Attribute由2部分:
Attribute ID + Attribute Value。
Attribute ID:16-bit无符号整数,用于区别一个Service Record内的其它属性。
Attribute Value:Attribute值。
Service Class:
每个Service 都是某个Service Class的实例. Service Class定义了ServiceRecord中包含的Service 属性。属性ID,属性值都被定义好了。
每个Service Class也有一个独特ID。这个ServiceClass标识符包含在属性值ServiceClassIDList属性中。并描绘为UUID。自从ServiceRecord中的属性格式以及含义依赖于Service Class后,ServiceClassIDList属性变得非常重要。
Searching For Service:
Service Search transaction(事务?)允许client得到Service RecordHandle。一旦SDP Client得到Service RecordHandle,它就可以请求这个Record内具体属性的值。
如果某个属性值UUID,则可以通过查找UUID查到这个属性。
UUID: universally unique identifier.(唯一性标识符)
SDP协议栈使用request/response模式工作,每个传输过程包括一个request protocol dataunit(PDU)和一个response PDU. SDP使用L2CAP连接传输数据。在发送RequestPDU但未收到Response PDU之前,不能向同一个server再发送Request PDU。
TransactionID:
用来识别Request PUD以及Response PUD。并用来对比某个Response PUD是否对应着RequestPUD。