通信新技术实验——服务发现东南大学移动通信国家重点实验室1通信新技术实验——服务发现开始放映结束放映通信新技术实验——服务发现东南大学移动通信国家重点实验室2实验简介内容:利用实验软件及蓝牙设备,通过具体的蓝牙服务发现协议,阐述其中用到的服务发现功能、客户机-服务器模型、数据元的编解码方式、工作流程和交互的协议数据包等等。要求:学生了解网络的服务发现方式、数据的表示方式和服务发现的工作流程。理解典型的客户机-服务器工作模式,理解查询服务与协调应用的概念。准备:本实验要求学生具有基本的网络知识和数据的编解码概念。通信新技术实验——服务发现东南大学移动通信国家重点实验室3目录•实验环境•实验目的•实验原理•实验内容•实验知识点•思考题回首页通信新技术实验——服务发现东南大学移动通信国家重点实验室4实验环境•每2台PC为一组。•硬件:SEMITTTP66022块;串口连接线2根。•软件:OS:Windows2000;显示设置:Windows标准字体;分辨率:1024×768。通信新技术实验——服务发现东南大学移动通信国家重点实验室5通过具体的蓝牙服务发现协议:•了解网络的服务发现方式;•了解数据的表示方式;•掌握服务发现的工作流程;•掌握典型的客户-服务器工作模式。实验目的客户机服务器通信新技术实验——服务发现东南大学移动通信国家重点实验室6实验原理1.服务发现的功能2.客户机-服务器模型3.数据元的编解码4.三种PDU交互的工作流程回目录通信新技术实验——服务发现东南大学移动通信国家重点实验室71.服务发现的功能•在一个以网络为中心的计算环境中,寻找和使用一个网络中的服务越来越重要。网络服务的形式各种各样,每个设备可提供的服务也日趋多样。•对于蓝牙设备来说,要想访问另一个设备的服务,必须知道该设备所提供的服务,以及获取该服务的一些信息(如该服务使用的各种协议栈、服务名称、服务提供者和获得服务所需要的参数)。查询服务服务记录1服务记录2服务记录3………通信新技术实验——服务发现东南大学移动通信国家重点实验室8•常用的服务发现方式:服务定位协议SLP(ServiceLocationProtocol)通用即插即用UPnP(UniversalPlugandPlay)•蓝牙SIG专门为蓝牙系统制定了一个服务发现协议SDP(ServiceDiscoveryProtocol),它非常适合蓝牙系统移动性较强的的特点,并且可以和其它服务发现协议共存于蓝牙环境中,符合蓝牙系统开放性的特点。•蓝牙服务发现协议的基本出发点是发现服务但不提供对服务的访问,对服务的访问需要通过其它协议来实现。回原理目录通信新技术实验——服务发现东南大学移动通信国家重点实验室92.客户机-服务器模型回原理目录•客户机-服务器交互是大多数网络通信的基础模式。客户机发送请求,等待响应。而服务器等待请求并完成基于请求的动作,形成响应的数据包,返回给客户机。•服务发现协议是典型的客户机-服务器模型。每个服务发现协议分为客户端部分和服务器端部分,两部分在不同的蓝牙设备上工作。一个蓝牙设备可以既是服务器同时又是客户机。请求服务的蓝牙设备运行服务发现协议的客户端部分,提供服务的蓝牙设备运行服务发现协议的服务器端部分。通信新技术实验——服务发现东南大学移动通信国家重点实验室10•服务发现协议中:客户机组成服务查询请求的协议数据单元PDU(ProtocolDataUnit)发送给服务器,服务器根据不同的请求,查询本地服务记录数据库,组成适当的响应PDU,返回给客户机,从而完成一次查询。流程如下图所示。•服务器应该满足多个请求同时到达的情况,并且对数据库进行保护。通信新技术实验——服务发现东南大学移动通信国家重点实验室11SDP客户端与服务器交互模型服务发现协议客户端客户端应用程序服务发现协议服务器端服务器端应用程序SDP响应SDP请求通信新技术实验——服务发现东南大学移动通信国家重点实验室123.数据元的编解码•由于查询结果多种多样,因此需要灵活的表示方式。同时这些数据在空中交互,所以应该采用尽量小的包以节约带宽。•蓝牙协议中采用数据元的形式来表示变长数据,这样可以减少对无线信道资源的浪费;数据库中的信息存储也以数据元的形式表示,这样可以节约存储资源。•下面我们将介绍数据元、通用专有识别符、服务记录、服务属性的概念。通信新技术实验——服务发现东南大学移动通信国家重点实验室13数据元的结构•数据元可以有效地表示可变长和不同属性的数据库信息,其结构如上图所示,它由头域和数据域构成。•头域用于描述数据域的数据类型和大小,它又分为类型描述府、尺寸描述符和附加位三部分。(见书28页)头域(8bits)数据域(长度根据头域)类型描述符(5bits)尺寸描述符(3bits)附加位数据元通信新技术实验——服务发现东南大学移动通信国家重点实验室14•类型描述符=0尺寸描述符=05bits3bits空类型类型描述符=2尺寸描述符=15bits3bits16-bit有符号整数16-bit数值16bits类型描述符=4尺寸描述符=55bits3bits字符串hat'h'8bits'a'24bits附加位=3't'类型描述符=6尺寸描述符=55bits3bitsDataElement序列DataElement18bitsnbits(n=0xff)附加位=nDataElement2类型描述符=7尺寸描述符=55bits3bitsDataElement选项集DataElement18bitsnbits(n=0xff)附加位=nDataElement2图几个数据元的例子通信新技术实验——服务发现东南大学移动通信国家重点实验室15•数据元的编解码编码过程:将服务记录用数据元格式表示出来,在注册函数中调用。解码过程:将查询返回的服务属性数据元解析成可以理解的服务记录形式,用树形结构给出。回原理目录通信新技术实验——服务发现东南大学移动通信国家重点实验室16•通用专有识别符UUIDa.服务属性的属性值常常需要用通用专有识别符UUID(UniversallyUniqueIdentifier)来标识,它在时间和空间上都是唯一的,用于标识某一事物如服务、协议等。b.UUID长度为128比特。为了减少存储和传输负担,对一些常用的和已注册的用途预先分配了UUID,这些UUID的长度为16比特或32比特,它们可以转换为128比特UUID。(书46页附表)通信新技术实验——服务发现东南大学移动通信国家重点实验室17•服务记录(ServiceRecord)服务发现协议服务器中关于一个服务的所有信息构成了一条服务记录;一条服务记录含有一个服务的所有服务属性;每个服务记录有一个服务记录句柄(Servicerecordhandle)与之对应;服务记录句柄对于每个服务记录来说是唯一的。在同一个服务发现协议服务器端,不同的服务记录有不同的服务记录句柄值。但在不同的SDP服务器端,同一种服务记录的句柄之间相互独立,也就是说可能相同。通信新技术实验——服务发现东南大学移动通信国家重点实验室18•服务属性(ServiceAttribute)用于描述一个服务中的一条特性。它由属性ID和属性值构成;属性ID用于标识该服务属性描述的是何种特性,属性值表示该属性的具体内容;在服务发现协议服务器中,属性ID和属性值以数据元的形式表示;服务发现协议对服务的查找机制是基于通用专有识别符UUID的。服务属性的属性值通常用UUID来表示,即一个服务的特性是由一些UUID描述的。不同的服务属性,属性值有不同规定。(书29页)通信新技术实验——服务发现东南大学移动通信国家重点实验室19服务发现协议定义的3种服务属性:①通用属性:是所有服务记录都可以包含的服务属性,但并非所有的服务记录都必须含有所有的通用属性。②专门用于描述“服务发现服务器服务”的服务属性:③专门用于描述“浏览组描述符服务”的服务属性(书30页)通信新技术实验——服务发现东南大学移动通信国家重点实验室20服务属性项定义类型属性值属性IDServiceClassIDList0x0001ServiceClass0SerialPortUUIDUUIDProtocolDescriptorList0x0004Protocol0UUIDL2CAPProtocol1UUIDRFCOMMProtocolSpecificParameter0UINT8N=serverchannelServiceNameTextnameString“COM5”0x0100由上所述,一个服务记录中的所有服务属性可以按树形列举出来,从而组成针对服务特定的一条记录。一个串口服务的服务记录通信新技术实验——服务发现东南大学移动通信国家重点实验室214.PDU交互的工作流程SDP定义了2种获取服务信息的方式:•查找服务方式:在用户知道服务的UUID的情况下,用户通过指定服务类型(ServiceSearchPattern)来直接获得服务记录信息;服务发现协议的服务器端是根据服务类型来找与用户所要求的服务相匹配的服务记录的,它是唯一的查找服务的手段。•浏览服务方式:不知道服务的UUID,浏览各个服务记录;为了支持该方式,服务记录必须含有BrowseGroupList属性,该属性说明了该服务属于何种浏览组。为了实现上面的两种服务方式,协议定义了协议数据单元PDU(ProtocolDataUnit),服务器端和客户端间交换的就是这些协议数据单元。通信新技术实验——服务发现东南大学移动通信国家重点实验室22建立逻辑链路PDU交互断开逻辑链路•服务发现协议完成服务发现流程的前提是已经建立好逻辑链路。因此工作流程首先是键链过程,PDU交互,最后断开链接。•由于建立和断开逻辑链路不是本实验的内容,因此我们主要关注PDU的交互在完成服务发现中的作用。•对于不同的PDU交互实际上就是对应于不同的服务发现查询模式。•在实验中,我们将SDP对等协议之间传递的各种PDU显示给同学看。在不同的服务发现模式下,了解如何用不同的PDU来完成服务发现的功能。通信新技术实验——服务发现东南大学移动通信国家重点实验室23头域(Headers)参数域(Parameters)协议数据单元(PDU)格式头域(Headers):参数域(Parameters):格式:PDUIDTransactionID1bytes2bytesParameterLength2bytesParameter1ParameterLengthbytesParameterN..........Parameter2图协议数据单元的结构•PDUID用于标示该PDU的类型,它的值决定了该PDU后面的参数;•TransactionID用于标示一个请求类型的PDU。服务器端发出响应PDU时,其必须与请求类型PDU中的相同。所有发出的请求类型的PDU的应互不相同。•ParameterLength用于标示后面参数的总长度(byte)。通信新技术实验——服务发现东南大学移动通信国家重点实验室24PDU的种类目前有7种:值类型0x00保留0x01SDP_ErrorResponse0x02SDP_ServiceSearchRequest0x03SDP_ServiceSearchResponse0x04SDP_ServiceAttributeRequest0x05SDP_ServiceAttributeResponse0x06SDP_ServiceSearchAttributeRequest0x07SDP_ServiceSearchAttributeResponse0x07-0xFF保留通信新技术实验——服务发现东南大学移动通信国家重点实验室253种查找服务方式:①ServiceSearchTransaction方式:这种方式是客户端指定服务类型,服务器端找出满足条件的服务记录后将它们的服务记录句柄值返回给客户端。PDUTypePDUIDParametersSDP_ServiceSearchRequest0x02ServiceSearch