SDP (Bluetooth)

読み:エスディーピー
外語:SDP: Service Discovery Protocol 英語
品詞:名詞

Bluetoothで、利用できるサービスを通知するための通信プロトコル

目次

Bluetoothでは、入力機器、音楽機器、映像機器等々、様々なサービスが利用できる。しかし、全ての機器が全てのサービスをサポートしているわけではない。

SDPは、相手の機器がどのようなサービスをサポートしているのかを検索するのに利用されるプロトコルである。

Bluetoothで必須のプロトコルであり、Bluetooth対応をうたうためには対応する必要がある。このため、SDPの仕様はBluetoothコア仕様内で既定されている。

プロトコル

L2CAP上で動作する。

L2CAPのPSMは1である。

機能

SDPは、L2CAP上で動作するシンプルなプロトコルであり、情報交換に必要な最小限の機能が存在する。

信頼性などはプロトコルの水準で定義されていないため、必要であればアプリケーションのレベルでこれを行なう必要がある(繰り返して確認するなど)。

SDPを基礎技術に使うプロファイルに、DI(Device Identification Profile)がある。

パケット

SDPは、PDUを単位としてデータを送受信する。複数バイトの数値は、ネットワークバイトオーダー(ビッグエンディアン)となる。

PDU

PDUはヘッダーとパラメーターで構成され、次のようなフィールドを含む。

  • ヘッダー
    • PDU ID (1バイト)
    • Transaction ID (2バイト)
    • ParameterLength (2バイト)
  • パラメーター

ヘッダー

ヘッダーに含まれるPDU IDでSDPメッセージの種類を表わす。

  • 0x00 Reserved
  • 0x01 SDP_ErrorResponse
  • 0x02 SDP_ServiceSearchRequest
  • 0x03 SDP_ServiceSearchResponse
  • 0x04 SDP_ServiceAttributeRequest
  • 0x05 SDP_ServiceAttributeResponse
  • 0x06 SDP_ServiceSearchAttributeRequest
  • 0x07 SDP_ServiceSearchAttributeResponse
  • 0x08-0xFF Reserved

Transaction IDは、PDUを一意に特定するために使われる。リクエストに対するレスポンスは、同じTransaction IDがセットされる。

ParameterLengthは、そのPDU内に含まれる全パラメーターのバイト数を表わす。

パラメーター

パラメーターについては、PDU IDごとにその内容は異なる。

但し、次に示すデータ要素として表現形式に規定がある。

データ要素

送受信される情報をデータ要素といい、型を持っている。

データ要素はそれぞれが、ヘッダーフィールドとデータフィールドを持っている。

型は8ビットで表わし、5ビットのTypeと3ビットのSize Indexを含んでいる。Size Indexは、Typeに応じて有効な範囲が決まっている。

Typeの一覧は次の通り。

Type有効なSize概要
00Nil、NULL
10,1,2,3,4Unsigned Integer
20,1,2,3,4Signed twos-complement integer
31,2,4UUID
45,6,7文字列
50Boolean
65,6,7データ要素の配列
75,6,7データ要素の代替
85,6,7URL
9-31 Reserved

Size Indexの一覧は次の通り。

Size付加bitデータ長
001バイト、但しデータ要素タイプがNilの場合は0バイト
102バイト
204バイト、
308バイト、
4016バイト、
58符号なしの8ビット整数をデータサイズとして伴う
616符号なしの16ビット整数をデータサイズとして伴う
732符号なしの32ビット整数をデータサイズとして伴う

例えば、文字列 "Hoge" は、次のように6バイトに符号化される。

0b00100 0b101 0x04 'H' 'o' 'g' 'e'

サンプル

SDPクライアント→SDPサーバー

  • SDP_ServiceSearchRequest[15]
    • PDUID[1] { 0x02 }
    • TransactionID[2] { 0xtttt }
    • ParameterLength[2] { 0x000A }
    • ServiceSearchPattern[7]
      • DataElementSequence[7]
        • 0b00110 0b101
        • 0x05
        • UUID[5]
          • 0b00011 0b010 0xpppppppp
    • MaximumServiceRecordCount[2] { 0x0003 }
    • ContinuationState[1] { 0x00 }

SDPサーバー→SDPクライアント

  • SDP_ServiceSearchResponse[18]
    • PDUID[1] { 0x03 }
    • TransactionID[2] { 0xtttt }
    • ParameterLength[2] { 0x000D }
    • TotalServiceRecordCount[2] { 0x0002 }
    • CurrentServiceRecordCount[2] { 0x0002 }
    • ServiceRecordHandleList[8]
      • 0xqqqqqqqq
      • 0xrrrrrrrr
    • ContinuationState[1] { 0x00 }
用語の所属
Bluetooth

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club