服務(wù)發(fā)現(xiàn)課件_第1頁
服務(wù)發(fā)現(xiàn)課件_第2頁
服務(wù)發(fā)現(xiàn)課件_第3頁
服務(wù)發(fā)現(xiàn)課件_第4頁
服務(wù)發(fā)現(xiàn)課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

服務(wù)發(fā)現(xiàn)

1.

服務(wù)發(fā)現(xiàn)的功能

在一個以網(wǎng)絡(luò)為中心的計算環(huán)境中,尋找和使用一個網(wǎng)絡(luò)中的服務(wù)越來越重要。網(wǎng)絡(luò)服務(wù)的形式各種各樣,每個設(shè)備可提供的服務(wù)也日趨多樣。對于藍牙設(shè)備來說,要想訪問另一個設(shè)備的服務(wù),必須知道該設(shè)備所提供的服務(wù),以及獲取該服務(wù)的一些信息(如該服務(wù)使用的各種協(xié)議棧、服務(wù)名稱、服務(wù)提供者和獲得服務(wù)所需要的參數(shù))。查詢服務(wù)服務(wù)記錄1服務(wù)記錄2服務(wù)記錄3………常用的服務(wù)發(fā)現(xiàn)方式:服務(wù)定位協(xié)議SLP(ServiceLocationProtocol)通用即插即用UPnP(UniversalPlugandPlay)藍牙SIG專門為藍牙系統(tǒng)制定了一個服務(wù)發(fā)現(xiàn)協(xié)議SDP(ServiceDiscoveryProtocol),它非常適合藍牙系統(tǒng)移動性較強的的特點,并且可以和其它服務(wù)發(fā)現(xiàn)協(xié)議共存于藍牙環(huán)境中,符合藍牙系統(tǒng)開放性的特點。藍牙服務(wù)發(fā)現(xiàn)協(xié)議的基本出發(fā)點是發(fā)現(xiàn)服務(wù)但不提供對服務(wù)的訪問,對服務(wù)的訪問需要通過其它協(xié)議來實現(xiàn)?;卦砟夸?.

客戶機-服務(wù)器模型

回原理目錄

客戶機-服務(wù)器交互是大多數(shù)網(wǎng)絡(luò)通信的基礎(chǔ)模式??蛻魴C發(fā)送請求,等待響應(yīng)。而服務(wù)器等待請求并完成基于請求的動作,形成響應(yīng)的數(shù)據(jù)包,返回給客戶機。

服務(wù)發(fā)現(xiàn)協(xié)議是典型的客戶機-服務(wù)器模型。每個服務(wù)發(fā)現(xiàn)協(xié)議分為客戶端部分和服務(wù)器端部分,兩部分在不同的藍牙設(shè)備上工作。一個藍牙設(shè)備可以既是服務(wù)器同時又是客戶機。請求服務(wù)的藍牙設(shè)備運行服務(wù)發(fā)現(xiàn)協(xié)議的客戶端部分,提供服務(wù)的藍牙設(shè)備運行服務(wù)發(fā)現(xiàn)協(xié)議的服務(wù)器端部分。服務(wù)發(fā)現(xiàn)協(xié)議中:

客戶機組成服務(wù)查詢請求的協(xié)議數(shù)據(jù)單元PDU(ProtocolDataUnit)發(fā)送給服務(wù)器,服務(wù)器根據(jù)不同的請求,查詢本地服務(wù)記錄數(shù)據(jù)庫,組成適當(dāng)?shù)捻憫?yīng)PDU,返回給客戶機,從而完成一次查詢。流程如下圖所示。服務(wù)器應(yīng)該滿足多個請求同時到達的情況,并且對數(shù)據(jù)庫進行保護。SDP客戶端與服務(wù)器交互模型

3.

數(shù)據(jù)元的編解碼由于查詢結(jié)果多種多樣,因此需要靈活的表示方式。同時這些數(shù)據(jù)在空中交互,所以應(yīng)該采用盡量小的包以節(jié)約帶寬。藍牙協(xié)議中采用數(shù)據(jù)元的形式來表示變長數(shù)據(jù),這樣可以減少對無線信道資源的浪費;數(shù)據(jù)庫中的信息存儲也以數(shù)據(jù)元的形式表示,這樣可以節(jié)約存儲資源。下面我們將介紹數(shù)據(jù)元、通用專有識別符、服務(wù)記錄、服務(wù)屬性的概念。數(shù)據(jù)元的結(jié)構(gòu)數(shù)據(jù)元可以有效地表示可變長和不同屬性的數(shù)據(jù)庫信息,其結(jié)構(gòu)如上圖所示,它由頭域和數(shù)據(jù)域構(gòu)成。頭域用于描述數(shù)據(jù)域的數(shù)據(jù)類型和大小,它又分為類型描述府、尺寸描述符和附加位三部分。(見書28頁)頭域(>8bits)數(shù)據(jù)域(長度根據(jù)頭域)類型描述符(5bits)

尺寸描述符(3bits)附加位數(shù)據(jù)元

數(shù)據(jù)元的編解碼

編碼過程:將服務(wù)記錄用數(shù)據(jù)元格式表示出來,在注冊函數(shù)中調(diào)用。

解碼過程:將查詢返回的服務(wù)屬性數(shù)據(jù)元解析成可以理解的服務(wù)記錄形式,用樹形結(jié)構(gòu)給出?;卦砟夸浲ㄓ脤S凶R別符UUID

a.服務(wù)屬性的屬性值常常需要用通用專有識別符UUID(UniversallyUniqueIdentifier)來標(biāo)識,它在時間和空間上都是唯一的,用于標(biāo)識某一事物如服務(wù)、協(xié)議等。

b.UUID長度為128比特。為了減少存儲和傳輸負擔(dān),對一些常用的和已注冊的用途預(yù)先分配了UUID,這些UUID的長度為16比特或32比特,它們可以轉(zhuǎn)換為128比特UUID。

(書46頁附表)服務(wù)記錄(ServiceRecord) 服務(wù)發(fā)現(xiàn)協(xié)議服務(wù)器中關(guān)于一個服務(wù)的所有信息構(gòu)成了一條服務(wù)記錄; 一條服務(wù)記錄含有一個服務(wù)的所有服務(wù)屬性; 每個服務(wù)記錄有一個服務(wù)記錄句柄(Servicerecordhandle)與之對應(yīng);

服務(wù)記錄句柄對于每個服務(wù)記錄來說是唯一的。在同一個服務(wù)發(fā)現(xiàn)協(xié)議服務(wù)器端,不同的服務(wù)記錄有不同的服務(wù)記錄句柄值。但在不同的SDP服務(wù)器端,同一種服務(wù)記錄的句柄之間相互獨立,也就是說可能相同。服務(wù)屬性(ServiceAttribute) 用于描述一個服務(wù)中的一條特性。它由屬性ID和屬性值構(gòu)成;

屬性ID用于標(biāo)識該服務(wù)屬性描述的是何種特性,屬性值表示該屬性的具體內(nèi)容; 在服務(wù)發(fā)現(xiàn)協(xié)議服務(wù)器中,屬性ID和屬性值以數(shù)據(jù)元的形式表示; 服務(wù)發(fā)現(xiàn)協(xié)議對服務(wù)的查找機制是基于通用專有識別符UUID的。服務(wù)屬性的屬性值通常用UUID來表示,即一個服務(wù)的特性是由一些UUID描述的。 不同的服務(wù)屬性,屬性值有不同規(guī)定。

(書29頁)

服務(wù)發(fā)現(xiàn)協(xié)議定義的3種服務(wù)屬性:通用屬性:是所有服務(wù)記錄都可以包含的服務(wù)屬性,但并非所有的服務(wù)記錄都必須含有所有的通用屬性。

專門用于描述“服務(wù)發(fā)現(xiàn)服務(wù)器服務(wù)”的服務(wù)屬性:專門用于描述“瀏覽組描述符服務(wù)”的服務(wù)屬性(書30頁)服務(wù)屬性項定義類型屬性值屬性IDServiceClassIDList0x0001ServiceClass0SerialPortUUID

UUIDProtocolDescriptorList0x0004Protocol0UUIDL2CAPProtocol1UUIDRFCOMMProtocolSpecificParameter0UINT8N=serverchannel

ServiceNameTextname

String“COM5”0x0100

由上所述,一個服務(wù)記錄中的所有服務(wù)屬性可以按樹形列舉出來,從而組成針對服務(wù)特定的一條記錄。一個串口服務(wù)的服務(wù)記錄4.

PDU交互的工作流程

SDP定義了2種獲取服務(wù)信息的方式:查找服務(wù)方式:在用戶知道服務(wù)的UUID的情況下,用戶通過指定服務(wù)類型(ServiceSearchPattern)來直接獲得服務(wù)記錄信息; 服務(wù)發(fā)現(xiàn)協(xié)議的服務(wù)器端是根據(jù)服務(wù)類型來找與用戶所要求的服務(wù)相匹配的服務(wù)記錄的,它是唯一的查找服務(wù)的手段。瀏覽服務(wù)方式:不知道服務(wù)的UUID,瀏覽各個服務(wù)記錄; 為了支持該方式,服務(wù)記錄必須含有BrowseGroupList屬性,該屬性說明了該服務(wù)屬于何種瀏覽組。

為了實現(xiàn)上面的兩種服務(wù)方式,協(xié)議定義了協(xié)議數(shù)據(jù)單元PDU(ProtocolDataUnit),服務(wù)器端和客戶端間交換的就是這些協(xié)議數(shù)據(jù)單元。建立邏輯鏈路PDU交互斷開邏輯鏈路

服務(wù)發(fā)現(xiàn)協(xié)議完成服務(wù)發(fā)現(xiàn)流程的前提是已經(jīng)建立好邏輯鏈路。因此工作流程首先是鍵鏈過程,PDU交互,最后斷開鏈接。

由于建立和斷開邏輯鏈路不是本實驗的內(nèi)容,因此我們主要關(guān)注PDU的交互在完成服務(wù)發(fā)現(xiàn)中的作用。對于不同的PDU交互實際上就是對應(yīng)于不同的服務(wù)發(fā)現(xiàn)查詢模式。在實驗中,我們將SDP對等協(xié)議之間傳遞的各種PDU顯示給同學(xué)看。在不同的服務(wù)發(fā)現(xiàn)模式下,了解如何用不同的PDU來完成服務(wù)發(fā)現(xiàn)的功能。

PDUID用于標(biāo)示該PDU的類型,它的值決定了該PDU后面的參數(shù);

TransactionID用于標(biāo)示一個請求類型的PDU。服務(wù)器端發(fā)出響應(yīng)PDU時,其必須與請求類型PDU中的相同。所有發(fā)出的請求類型的PDU的應(yīng)互不相同。

ParameterLength用于標(biāo)示后面參數(shù)的總長度(byte)。

PDU的種類目前有7種:值類型0x00保留0x01SDP_ErrorResponse0x02SDP_ServiceSearchRequest0x03SDP_ServiceSearchResponse0x04SDP_ServiceAttributeRequest0x05SDP_ServiceAttributeResponse0x06SDP_ServiceSearchAttributeRequest0x07SDP_ServiceSearchAttributeResponse0x07-0xFF保留

3種查找服務(wù)方式:ServiceSearchTransaction方式: 這種方式是客戶端指定服務(wù)類型,服務(wù)器端找出滿足條件的服務(wù)記錄后將它們的服務(wù)記錄句柄值返回給客戶端。PDUTypePDUIDParametersSDP_ServiceSearchRequest

0x02ServiceSearchPattern,MaximumServiceRecordCount,ContinuationState

ServiceAttributeTransaction方式:這種方式是客戶端指定一個服務(wù)記錄句柄值,并指定需要服務(wù)器端返回該服務(wù)記錄哪些服務(wù)屬性,服務(wù)器端把這些服務(wù)屬性(如果存在的話)返回給客戶端。該方式是工作于ServiceSearchTransaction基礎(chǔ)上的,因為對同一種服務(wù),在不同的藍牙設(shè)備上,服務(wù)記錄句柄值可以不同。PDUTypePDUIDParametersSDP_ServiceAttributeRequest

0x04ServiceRecordHandle,MaximumAttributeByteCount,AttributeIDList,ContinuationState

ServiceSearchAttributeTransaction方式:這種方式是客戶端指定服務(wù)類型,并指定需要服務(wù)器端返回的服務(wù)屬性,服務(wù)器端找出滿足條件的服務(wù)記錄后,把它們的服務(wù)屬性返回給客戶端。

PDUTypePDUIDParametersSDP_ServiceSearchAttributeRequest

0x06

ServiceSearchPattern,MaximumAttributeByteCount,AttributeIDList,ContinuationState回原理目錄實驗內(nèi)容實驗流程數(shù)據(jù)分析1.

實驗流程在服務(wù)器端注冊本機的服務(wù)記錄客戶端查詢服務(wù)器已注冊的服務(wù)記錄

查詢同組設(shè)備建立物理鏈路的鏈接 用3種方式進行服務(wù)發(fā)現(xiàn)分析交互PDU分析查詢返回的數(shù)據(jù)斷開物理鏈路回內(nèi)容目錄服務(wù)器端注冊界面客戶機端服務(wù)發(fā)現(xiàn)界面2.

數(shù)據(jù)分析觀察客戶機發(fā)起請求,服務(wù)器端給出響應(yīng)的過程。將服務(wù)器端注冊的服務(wù)記錄表示成數(shù)據(jù)元的格式,將查詢結(jié)果的數(shù)據(jù)元的形式改寫為服務(wù)記錄的方式,從中了解對多種類型且可變長的數(shù)據(jù)的一種簡潔的表示方法。觀察同層協(xié)議之間真正傳遞的PDU,了解和比較各種查詢方式的優(yōu)劣。根據(jù)自己填寫的服務(wù)記錄屬性值,寫出數(shù)據(jù)元的二進制碼,和實驗程序給出的是否相同。根據(jù)不同的查找服務(wù)方式,判斷給出的PDU是否正確,是否符合理解。回內(nèi)容目錄實驗知識點客戶機-服務(wù)器模式藍牙服務(wù)發(fā)現(xiàn)協(xié)議ServiceDiscoveryProtocol數(shù)據(jù)元DataElement服務(wù)記錄ServiceRecord服務(wù)屬性ServiceAttribute(3種服務(wù)屬性)服務(wù)記錄句柄ServiceRecordHandle通用專有識別符UniversallyUniqueIdentifier協(xié)議數(shù)據(jù)單元ProtocolDataUnit2種獲取服務(wù)信息的方式:

查找服務(wù)方式SearchingforServices

瀏覽服務(wù)方式Browsingf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論