Введение
Для обмена музыкой в iTunes от Apple протокол доступа к цифровому аудио (DAAP) — это запатентованный протокол, разработанный Apple для программного обеспечения iTunes и предназначенный для обмена медиафайлами в локальной сети. DAAP решает те же задачи для Apple, что и стандарты UPnP AV для участников Digital Living Network Alliance (DLNA).
The Digital Audio Access Protocol (DAAP) is the proprietary protocol introduced by Apple in its iTunes software to share media across a local network. DAAP addresses the same problems for Apple as the UPnP AV standards address for members of the Digital Living Network Alliance (DLNA).
Описание
Протокол DAAP был впервые представлен в iTunes версии 4.0. Изначально Apple официально не публиковала описание протокола, однако он был достаточно хорошо исследован обратной инженерией, что позволило создать повторные реализации протокола для платформ, отличных от iTunes. DAAP-сервер – это специализированный HTTP-сервер, выполняющий две функции: он отправляет список песен и транслирует запрошенные песни клиентам. Также предусмотрена возможность уведомления клиента об изменениях на сервере. Клиент отправляет запросы на сервер в виде URL-адресов и получает ответ с данными в формате MIME, которые клиент может преобразовать в XML. iTunes использует сервис zeroconf (также известный как Bonjour) для объявления и обнаружения DAAP-ресурсов в локальной сети. По умолчанию служба DAAP использует TCP-порт 3689. DAAP – одна из двух схем обмена медиафайлами, выпущенных Apple на данный момент. Другая, Digital Photo Access Protocol (DPAP), используется iPhoto для обмена изображениями. Обе они основаны на базовом протоколе Digital Media Access Protocol (DMAP). Ранние версии iTunes позволяли пользователям подключаться к общим ресурсам через Интернет, однако в последних версиях обмениваться музыкой могут только компьютеры в одной подсети (возможны обходные пути, такие как туннелирование портов). Издание The Register предполагает, что Apple предприняла этот шаг в ответ на давление со стороны звукозаписывающих лейблов. Более поздние версии iTunes также ограничивают количество клиентов до 5 уникальных IP-адресов в течение 24 часов. DAAP также был реализован в других медиа-приложениях, не связанных с iTunes, таких как Banshee, Amarok, Exaile (с плагином), Songbird (с плагином), Rhythmbox и WiFiTunes.
Аутентификация DAAP
Начиная с iTunes 4.2, Apple добавила аутентификацию для обмена данными по протоколу DAAP, что означало, что подключаться к серверам iTunes могли только другие экземпляры iTunes. В iTunes 4.5 это было дополнительно изменено для использования собственного алгоритма хеширования вместо стандартной функции MD5, которая использовалась ранее. Оба метода аутентификации были успешно взломаны и проанализированы в течение нескольких месяцев после выпуска. С iTunes 7.0 для подключения к серверу iTunes 7.0 требуется новый хеш заголовка "Client DAAP Validation". Это не влияет на сторонние DAAP-серверы, и все DAAP-клиенты, не поддерживающие эту функцию, включая сам iTunes версий ниже 7.0, не смогут подключиться к серверу iTunes 7.0, получая HTTP-ошибку "403 Forbidden". Анализ трафика аутентификации iTunes 7.0 указывает на то, что для вычисления хеша, отправляемого в заголовке "Client DAAP Validation", происходит обмен сертификатами.
Клиенты DAAP
НазваниеПлатформа: Рабочий столПлатформа: ПортативнаяПлатформа: Устройства/ДругиеПлатформа: ТелевизорыСостояние разработкиiOS Музыкальное приложение (ранее приложение iPod) iOS (через настройку: пароль в Настройках, затем Еще>Общий доступ), начиная с iOS 4.3 НативныйAmarokWindows, Mac, LinuxАктивныйBansheeWindows, Mac, LinuxАктивныйCrossfireКроссплатформенный Ajax-клиент Firefly, с поддержкой множества браузеровSafari (включая iOS), Nokia, Opera, IE, ChromeАктивныйDAAP КлиентAndroidНеактивныйDAAP Media PlayerAndroidАктивныйDiapenteAndroidНеактивныйFireflyClientНезависимый (использует Java)НеактивныйGet it togetherЛюбая платформа, поддерживающая JavaНеактивныйiTunesWindows, MaciOSApple TVНативныйLimeWireWindows, Mac, LinuxАктивныйOne2OhMyGodЛюбая платформа, поддерживающая JavaНеактивныйRhythmboxLinuxАктивныйRoku Soundbridge и RadioRokuНеактивныйWiFiTunesPocket PCDormantSongbirdWindows, Mac, Linux (не поддерживается)Неактивный, через плагин для версии 1.8.0SoundBoxWindows, MacАктивныйSilverplayТребуется только SilverlightАктивныйSimple DAAP ClientiOSНеактивныйWinamp с ml daap плагиномWindowsWinamp прекратил поддержку 20.12.2013; ml daap неактивен, зависит от поддержки Apple Bonjour для WindowsXBMCWindows, Mac, LinuxXBMC LiveiPadApple TV (2-го поколения) и некоторые другиеАктивный
Safari (inc. iOS), Nokia, Opera, IE, ChromeActiveDAAP ClientAndroidDormantDAAP Media PlayerAndroidActiveDiapenteAndroidDormantFireflyClientIndependent (uses Java)DormantGet it togetherAny Java supported platformDormantiTunesWindows, MaciOSApple TVNativeLimeWireWindows, Mac, LinuxActiveOne2OhMyGodAny Java supported platformDormantRhythmboxLinuxActiveRoku Soundbridge and RadioRokuDormantWiFiTunesPocketPCDormantSongbirdWindows, Mac, Linux (unsupported)Dormant, via plugin for 1.8.0SoundBoxWindows, MacActiveSilverplayOnly Silverlight requiredActiveSimple DAAP ClientiOSDormantWinamp with ml daap pluginWindowsWinamp discontinued on 12/20/2013; ml daap dormant, depends on Apple Bonjour support for WindowsXBMCWindows, Mac, LinuxXBMC Live iPadApple TV (2nd generation) only, and some othersActive