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でSDPメッセージの種類を表わす。
 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サーバー→SDPクライアント

再検索