Digital Audio Access Protocol (DAAP) について
Digital Audio Access Protocol(DAAP)は、
Appleが開発した、ローカルネットワーク内で音楽ファイルを共有するための独自の
通信プロトコルです。主にiTunesで利用されており、家庭内や小規模なネットワーク環境での音楽共有を容易にしています。DAAPの登場により、ユーザーは自身のライブラリを複数のデバイスで楽しむことができるようになりました。
DAAPの概要
DAAPは、iTunesバージョン4で初めて実装されました。
Appleはプロトコルの詳細を公式には公開していませんでしたが、
リバースエンジニアリングによって、iTunes以外のプラットフォームでもDAAPを利用できるようになりました。当初は広く使われていましたが、後に
Appleは商用利用に対してプロトコルのライセンスを提供するようになりました。
DAAP
サーバーは、特別なHTTP
サーバーとして機能します。主な機能は、共有可能な音楽のリストを提供すること、そしてクライアントからのリクエストに応じて音楽ファイルを送信することです。さらに、
サーバー側の変更をリアルタイムでクライアントに通知する機能も備えています。クライアントからのリクエストはURL形式で送信され、レスポンスは `application/x-dmap-tagged` というMIMEタイプのデータとして返されます。このデータは、クライアント側でXML形式に変換して解析されます。
iTunesは、
Bonjourとしても知られる
ZeroConfサービスを利用して、ローカル
サブネット上のDAAP
サーバーを検出します。DAAPはデフォルトでTCPポート3689番を使用します。
関連プロトコル
DAAPは、
Appleが提供するメディア共有手段の一つであり、もう一つはDigital Photo Access Protocol (DPAP)です。DPAPはiPhotoで使用されています。両方のプロトコルは、基礎となるDigital Media Access Protocol (DMAP) に依存しています。
利用制限
初期のiTunesはインターネット上での共有も可能でしたが、新しいバージョンでは同一
サブネット内のコンピューターとのみ共有可能となりました。この制限は、レコードレーベルからの圧力によるものと推測されています。また、新しいバージョンでは、24時間以内に接続できるクライアントの
IPアドレスが5つに制限されています。
他のメディアプレイヤーでの実装
DAAPは、
Banshee、Amarok、
Exaile、Songbird、
Rhythmbox、WiFiTunesなど、iTunes以外の多くのメディアプレイヤーにも実装されています。これらのプレイヤーを利用することで、iTunes以外の環境でもDAAPによる音楽共有が可能です。
DAAPの認証
iTunes 4.2以降、
AppleはDAAPに認証機構を追加しました。これにより、DAAP
サーバーに接続できるクライアントがiTunesに限定されるようになりました。iTunes 4.5以降では、
MD5ハッシュに代わり、独自のハッシュアルゴリズムが使用されるようになりました。しかし、これらの認証機構はリリース後数ヶ月以内に
リバースエンジニアリングによって解読されました。
iTunes 7.0からは、
サーバーに接続する際に `'Client-DAAP-Validation'` ヘッダーが必須になりました。この変更は、サードパーティのDAAP
サーバーには影響を与えませんでしたが、すべてのクライアント(iTunesの旧バージョンを含む)は、7.0以降の
サーバーに接続できなくなりました。iTunes 7.0の通信を解析した結果、このヘッダー内で送信されるハッシュの計算には、証明書の交換が含まれることが判明しました。
2009年9月まで、iTunes 7.0の認証機構は解読されておらず、iTunes 7.x、8.x、9.xの
サーバーから音楽をストリーミングできるクライアントは存在しません。
クライアント
DAAPのクライアントには、iTunesの他、
Banshee、Amarok、
Exaile、Songbird、
Rhythmbox、WiFiTunesなどが挙げられます。これらのクライアントは、DAAP
サーバーから音楽リストを取得し、音楽をストリーミング再生する機能を備えています。
関連情報
- - OpenDAAP forum
- - Unofficial DAAP protocol documentation
- - DAAP, a C++ implementation of DAAP. (開発は終了)
- - libopendaap, a C implementation of DAAP
- - DAAPD, another implementation of DAAP on Unix.
- - Firefly DAAP Media Server, implementation of the DAAP protocol (both video and audio) for Windows, Linux, Mac OS X and Mobile OS X (iPod touch and iPhone). (メンテナンス終了)
- - forked-daapd, a rewritten version of Firefly Media Server for Linux (開発中)
- - Tangerine, C# based DAAP server which runs on Linux, Windows, and Mac OS X.
- - iTunes 7.0 traffic analysis