版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务发现
1.
服务发现的功能
在一个以网络为中心的计算环境中,寻找和使用一个网络中的服务越来越重要。网络服务的形式各种各样,每个设备可提供的服务也日趋多样。对于蓝牙设备来说,要想访问另一个设备的服务,必须知道该设备所提供的服务,以及获取该服务的一些信息(如该服务使用的各种协议栈、服务名称、服务提供者和获得服务所需要的参数)。查询服务服务记录1服务记录2服务记录3………常用的服务发现方式:服务定位协议SLP(ServiceLocationProtocol)通用即插即用UPnP(UniversalPlugandPlay)蓝牙SIG专门为蓝牙系统制定了一个服务发现协议SDP(ServiceDiscoveryProtocol),它非常适合蓝牙系统移动性较强的的特点,并且可以和其它服务发现协议共存于蓝牙环境中,符合蓝牙系统开放性的特点。蓝牙服务发现协议的基本出发点是发现服务但不提供对服务的访问,对服务的访问需要通过其它协议来实现。回原理目录2.
客户机-服务器模型
回原理目录
客户机-服务器交互是大多数网络通信的基础模式。客户机发送请求,等待响应。而服务器等待请求并完成基于请求的动作,形成响应的数据包,返回给客户机。
服务发现协议是典型的客户机-服务器模型。每个服务发现协议分为客户端部分和服务器端部分,两部分在不同的蓝牙设备上工作。一个蓝牙设备可以既是服务器同时又是客户机。请求服务的蓝牙设备运行服务发现协议的客户端部分,提供服务的蓝牙设备运行服务发现协议的服务器端部分。服务发现协议中:
客户机组成服务查询请求的协议数据单元PDU(ProtocolDataUnit)发送给服务器,服务器根据不同的请求,查询本地服务记录数据库,组成适当的响应PDU,返回给客户机,从而完成一次查询。流程如下图所示。服务器应该满足多个请求同时到达的情况,并且对数据库进行保护。SDP客户端与服务器交互模型
3.
数据元的编解码由于查询结果多种多样,因此需要灵活的表示方式。同时这些数据在空中交互,所以应该采用尽量小的包以节约带宽。蓝牙协议中采用数据元的形式来表示变长数据,这样可以减少对无线信道资源的浪费;数据库中的信息存储也以数据元的形式表示,这样可以节约存储资源。下面我们将介绍数据元、通用专有识别符、服务记录、服务属性的概念。数据元的结构数据元可以有效地表示可变长和不同属性的数据库信息,其结构如上图所示,它由头域和数据域构成。头域用于描述数据域的数据类型和大小,它又分为类型描述府、尺寸描述符和附加位三部分。(见书28页)头域(>8bits)数据域(长度根据头域)类型描述符(5bits)
尺寸描述符(3bits)附加位数据元
数据元的编解码
编码过程:将服务记录用数据元格式表示出来,在注册函数中调用。
解码过程:将查询返回的服务属性数据元解析成可以理解的服务记录形式,用树形结构给出。回原理目录通用专有识别符UUID
a.服务属性的属性值常常需要用通用专有识别符UUID(UniversallyUniqueIdentifier)来标识,它在时间和空间上都是唯一的,用于标识某一事物如服务、协议等。
b.UUID长度为128比特。为了减少存储和传输负担,对一些常用的和已注册的用途预先分配了UUID,这些UUID的长度为16比特或32比特,它们可以转换为128比特UUID。
(书46页附表)服务记录(ServiceRecord) 服务发现协议服务器中关于一个服务的所有信息构成了一条服务记录; 一条服务记录含有一个服务的所有服务属性; 每个服务记录有一个服务记录句柄(Servicerecordhandle)与之对应;
服务记录句柄对于每个服务记录来说是唯一的。在同一个服务发现协议服务器端,不同的服务记录有不同的服务记录句柄值。但在不同的SDP服务器端,同一种服务记录的句柄之间相互独立,也就是说可能相同。服务属性(ServiceAttribute) 用于描述一个服务中的一条特性。它由属性ID和属性值构成;
属性ID用于标识该服务属性描述的是何种特性,属性值表示该属性的具体内容; 在服务发现协议服务器中,属性ID和属性值以数据元的形式表示; 服务发现协议对服务的查找机制是基于通用专有识别符UUID的。服务属性的属性值通常用UUID来表示,即一个服务的特性是由一些UUID描述的。 不同的服务属性,属性值有不同规定。
(书29页)
服务发现协议定义的3种服务属性:通用属性:是所有服务记录都可以包含的服务属性,但并非所有的服务记录都必须含有所有的通用属性。
专门用于描述“服务发现服务器服务”的服务属性:专门用于描述“浏览组描述符服务”的服务属性(书30页)服务属性项定义类型属性值属性IDServiceClassIDList0x0001ServiceClass0SerialPortUUID
UUIDProtocolDescriptorList0x0004Protocol0UUIDL2CAPProtocol1UUIDRFCOMMProtocolSpecificParameter0UINT8N=serverchannel
ServiceNameTextname
String“COM5”0x0100
由上所述,一个服务记录中的所有服务属性可以按树形列举出来,从而组成针对服务特定的一条记录。一个串口服务的服务记录4.
PDU交互的工作流程
SDP定义了2种获取服务信息的方式:查找服务方式:在用户知道服务的UUID的情况下,用户通过指定服务类型(ServiceSearchPattern)来直接获得服务记录信息; 服务发现协议的服务器端是根据服务类型来找与用户所要求的服务相匹配的服务记录的,它是唯一的查找服务的手段。浏览服务方式:不知道服务的UUID,浏览各个服务记录; 为了支持该方式,服务记录必须含有BrowseGroupList属性,该属性说明了该服务属于何种浏览组。
为了实现上面的两种服务方式,协议定义了协议数据单元PDU(ProtocolDataUnit),服务器端和客户端间交换的就是这些协议数据单元。建立逻辑链路PDU交互断开逻辑链路
服务发现协议完成服务发现流程的前提是已经建立好逻辑链路。因此工作流程首先是键链过程,PDU交互,最后断开链接。
由于建立和断开逻辑链路不是本实验的内容,因此我们主要关注PDU的交互在完成服务发现中的作用。对于不同的PDU交互实际上就是对应于不同的服务发现查询模式。在实验中,我们将SDP对等协议之间传递的各种PDU显示给同学看。在不同的服务发现模式下,了解如何用不同的PDU来完成服务发现的功能。
PDUID用于标示该PDU的类型,它的值决定了该PDU后面的参数;
TransactionID用于标示一个请求类型的PDU。服务器端发出响应PDU时,其必须与请求类型PDU中的相同。所有发出的请求类型的PDU的应互不相同。
ParameterLength用于标示后面参数的总长度(byte)。
PDU的种类目前有7种:值类型0x00保留0x01SDP_ErrorResponse0x02SDP_ServiceSearchRequest0x03SDP_ServiceSearchResponse0x04SDP_ServiceAttributeRequest0x05SDP_ServiceAttributeResponse0x06SDP_ServiceSearchAttributeRequest0x07SDP_ServiceSearchAttributeResponse0x07-0xFF保留
3种查找服务方式:ServiceSearchTransaction方式: 这种方式是客户端指定服务类型,服务器端找出满足条件的服务记录后将它们的服务记录句柄值返回给客户端。PDUTypePDUIDParametersSDP_ServiceSearchRequest
0x02ServiceSearchPattern,MaximumServiceRecordCount,ContinuationState
ServiceAttributeTransaction方式:这种方式是客户端指定一个服务记录句柄值,并指定需要服务器端返回该服务记录哪些服务属性,服务器端把这些服务属性(如果存在的话)返回给客户端。该方式是工作于ServiceSearchTransaction基础上的,因为对同一种服务,在不同的蓝牙设备上,服务记录句柄值可以不同。PDUTypePDUIDParametersSDP_ServiceAttributeRequest
0x04ServiceRecordHandle,MaximumAttributeByteCount,AttributeIDList,ContinuationState
ServiceSearchAttributeTransaction方式:这种方式是客户端指定服务类型,并指定需要服务器端返回的服务属性,服务器端找出满足条件的服务记录后,把它们的服务属性返回给客户端。
PDUTypePDUIDParametersSDP_ServiceSearchAttributeRequest
0x06
ServiceSearchPattern,MaximumAttributeByteCount,AttributeIDList,ContinuationState回原理目录实验内容实验流程数据分析1.
实验流程在服务器端注册本机的服务记录客户端查询服务器已注册的服务记录
查询同组设备建立物理链路的链接 用3种方式进行服务发现分析交互PDU分析查询返回的数据断开物理链路回内容目录服务器端注册界面客户机端服务发现界面2.
数据分析观察客户机发起请求,服务器端给出响应的过程。将服务器端注册的服务记录表示成数据元的格式,将查询结果的数据元的形式改写为服务记录的方式,从中了解对多种类型且可变长的数据的一种简洁的表示方法。观察同层协议之间真正传递的PDU,了解和比较各种查询方式的优劣。根据自己填写的服务记录属性值,写出数据元的二进制码,和实验程序给出的是否相同。根据不同的查找服务方式,判断给出的PDU是否正确,是否符合理解。回内容目录实验知识点客户机-服务器模式蓝牙服务发现协议ServiceDiscoveryProtocol数据元DataElement服务记录ServiceRecord服务属性ServiceAttribute(3种服务属性)服务记录句柄ServiceRecordHandle通用专有识别符UniversallyUniqueIdentifier协议数据单元ProtocolDataUnit2种获取服务信息的方式:
查找服务方式SearchingforServices
浏览服务方式Browsingf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 刃具制造工岗前变更管理考核试卷含答案
- 土石方挖掘机司机安全知识水平考核试卷含答案
- 乳品杀菌工常识水平考核试卷含答案
- 乙炔发生工岗前理论模拟考核试卷含答案
- 漆艺师基础常识模拟考核试卷含答案
- 制材工岗位责任制强化考核试卷含答案
- 道路货运汽车驾驶员岗位安全理论考核试卷含答案
- 石墨化工岗位记录考核试卷含答案
- 呼吸道传染病防控应急预案
- 第二单元测试卷年统编版六年级上册语文
- 化工装置开车前安全检查
- GB/T 43655-2024自攻螺钉连接底孔直径和拧紧扭矩技术条件
- 国企招聘中层干部笔试题库
- 医院院内感染培训
- 青海省某节水灌溉示范项目可行性报告
- 强制性条文宣贯课件
- 三营养性添加剂氨基酸添加剂
- 关于春节放假的通知范文(关于春节放假的通知范本)
- 孝道与感恩企业培训教材课件
- 高考英语衡水体字帖电子书
- 第二章因子试验设计-《试验设计与建模》课件
评论
0/150
提交评论