Bluetoothによるネットワーキング の0(基本的事項)
Bluetoothによるネットワーキングとしてはダイアルアップネットワークがよく知られている。つまり携帯電話のようなデバイスを無線経由でダイアルアップするためにBluetoothが使われる事が非常に多い。このようなネットワーク方式はDUN(Dial Up Network)と呼ばれる。
しかし、Bluetoothを使ったネットワークとして別にPAN(Personal Area Network)も用意されている。PANはBluetooth経由でEthernet通信を可能にする。
PANの利用用途としては、Wi-FiネットワークにおけるAd-Hocネットワーキングが最も近い。Wi-Fiと異なり、暗号化インフラはPINの形で統合されており*1、セットアップはそれなりに容易といえる。
ただし、PANを使用したいシチュエーションは非常に限られている。
例えば、ファイルの転送を行いたければFTPやOPPという別のプロファイルが存在し、これらのプロファイルは携帯電話などPC以外のデバイスでも大抵サポートされている。対して、PANをサポートしたデバイスは基本的にPC以外に存在しない(PDAの類が含まれることも有る)。
PANは通常のTCP/IPソフトウェアをAd-Hoc的に使用したいというケースにだけ威力を発揮する。
アクセスポイント的な使用
Windows XPでは、Ethernetデバイス同士のブリッジを行えるため、Bluetoothデバイスが提供するEthernetと既存のEthernetをブリッジすることでPANを無線LANのAP的に使用することができる。
ただし、これはXPやVistaの標準Bluetoothスタックでは行えない。
事前の要求
PANを使用するアプリケーションを設計する前に推奨される事項として、以下が有る。
- IPv6をサポートすること
IPv4はAd-Hocネットワークのためのシステムが存在しないため、機能することを保証できない。一部のBluetoothスタックはPANと同時に通常のDHCPをサポートすることでIPv4でも動作するようにしているが、それ以外の場合はいわゆる「ネットワークアドレスの取得」が終了(タイムアウト)するまでIPv4ネットワークは使用できない。
それよりも問題となるのは、Windows標準スタックではDHCPサーバをサポートしていない。
対して、IPv6ではMACアドレスを使用した直接の通信(Link-Localアドレス)が可能で有るため、特にIP層を意識する必要なくシステムをデザインできる。
IPv6そのものは近隣ノードを発見するためのインフラを提供しないため、何らかの方法で近隣ノードを取得する必要が有る。
Bluetoothスタックに対して接続中のデバイスを問い合わせる方法はBluetoothスタックごとに異なるのでアテにならない。
ひとつはBonjourを使うことで、適当なサービスをBonjourに対して提供することで近隣のノードを発見することができる。また、BonjourやLLMNRがインストールされたコンピュータであれば、名前(ホスト名)を指定して名前解決を行うことで接続しているBluetoothデバイスのIPv6アドレスを知ることが出来る。
ただし、BonjourはWindowsはデフォルトでは装備しておらず、LLMNRはWindows Vista以外は装備していない。
IPv6はマルチキャストに対して良い考察を提供しており、自前のディスカバリプロトコルを実装するのもそれほど悪い選択肢ではない。この場合Link-Localマルチキャストアドレスが使用できる。