TheDigital Audio Access Protocol (DAAP) is theproprietary protocol introduced byApple in itsiTunes software to share media across a local network.
DAAP addresses the same problems for Apple as theUPnP AV standards address for members of theDigital Living Network Alliance (DLNA).
The DAAP protocol was originally introduced in iTunes version 4.0.[1] Initially, Apple did not officially release a protocol description, but it has been reverse-engineered to a sufficient degree that reimplementations of the protocol for non-iTunes platforms have been possible.
A DAAP server is a specializedHTTP server, which performs two functions. It sends a list of songs and it streams requested songs to clients. There are also provisions to notify the client of changes to the server. Requests are sent to the server by the client in form of URLs and are responded to with data inapplication/x-dmap-tagged mime-type, which can be converted toXML by the client. iTunes uses thezeroconf (also known asBonjour) service to announce and discover DAAP shares on a localsubnet. The DAAP service usesTCP port 3689 by default.[2]
DAAP is one of two media sharing schemes that Apple has currently released. The other,Digital Photo Access Protocol (DPAP), is used byiPhoto for sharing images. They both rely on an underlying protocol,Digital Media Access Protocol (DMAP).
Early versions of iTunes allowed users to connect to shares across the Internet, however, in recent versions only computers on the same subnet can share music (workarounds such asport tunneling are possible).The Register speculates that Apple made this move in response to pressure from the record labels.[3] More recent versions of iTunes also limit the number of clients to 5 uniqueIP addresses within a 24-hour period.
DAAP has also been implemented in other non-iTunes media applications such asBanshee,Amarok,Exaile (with a plugin),Songbird (with a plugin),Rhythmbox, andWiFiTunes.
Beginning with iTunes 4.2, Apple introduced authentication to DAAP sharing, meaning that the only clients that could connect to iTunes servers were other instances of iTunes. This was further modified in iTunes 4.5 to use a custom hashing algorithm, rather than the standardMD5 function used previously. Both authentication methods were successfully reverse engineered within months of release.[4]
With iTunes 7.0, a new 'Client-DAAP-Validation' header hash is needed when connecting to an iTunes 7.0 server. This does not affect third-party DAAP servers, and all DAAP clients without support for this feature, including iTunes itself before version 7.0, will fail to connect to an iTunes 7.0 server, receiving a '403 Forbidden' HTTP error. The iTunes 7.0 authenticationtraffic analysis seem to indicate that a certificate exchange is performed to calculate the hash sent in the 'Client-DAAP-Validation' header.
| Name | Platform: Desktop | Platform: Portable | Platform: Devices/Other | Platform: TVs | Development status |
|---|---|---|---|---|---|
| iOS Music app (formerly iPod app) | iOS (by setting: password on Settings, then More>Shared), sinceiOS 4.3 | Native | |||
| Amarok | Windows, Mac, Linux | Active | |||
| Banshee | Windows, Mac, Linux | Active | |||
| Crossfire | Cross-platform Ajax-based Firefly client, with multiple browser support Safari (inc.iOS), Nokia, Opera, IE, Chrome | Active | |||
| DAAP Client | Android | Dormant | |||
| DAAP Media Player | Android | Active | |||
| Diapente | Android | Dormant | |||
| FireflyClient | Independent (usesJava) | Dormant | |||
| Get it together | Any Java supported platform | Dormant | |||
| iTunes | Windows, Mac | iOS | Apple TV | Native | |
| LimeWire | Windows, Mac, Linux | Active | |||
| One2OhMyGod | Any Java supported platform | Dormant | |||
| Rhythmbox | Linux | Active | |||
| Roku Soundbridge and Radio | Roku | Dormant | |||
| WiFiTunes | PocketPC | Dormant | |||
| Songbird | Windows, Mac, Linux (unsupported) | Dormant, via plugin for 1.8.0 | |||
| SoundBox | Windows, Mac | Active | |||
| Silverplay | OnlySilverlight required | Active | |||
| Simple DAAP Client | iOS | Dormant | |||
| Winamp with ml_daap plugin | Windows | Winamp discontinued on 12/20/2013; ml_daap dormant, depends on Apple Bonjour support for Windows | |||
| XBMC | Windows, Mac, Linux | XBMC Live iPad | Apple TV (2nd generation) only, and some others | Active |
| Name | Operating system | Development status | |||
|---|---|---|---|---|---|
| Linux | macOS | Microsoft Windows | Other | ||
| iTunes | No | No | Yes | No | Active |
| Apple Music | No | Yes | No | No | Active |
| OwnTone | Yes | No | No | FreeBSD | Active |
| Firefly Media Server (mt-daapd) | Yes | Yes | Yes | FreeBSD | Dormant |
| Tangerine | Yes | Yes | Yes | FreeBSD | Dormant |
| spydaap DAAP server (python) | Yes | Yes | Yes | FreeBSD | Dormant |
| FreeNAS and NAS4Free | No | No | No | FreeBSD | Active |
| NASLite M2 | Yes | No | No | No | Active |
| OpenMediaVault | Yes | No | No | No | Active |
| Ampache | Yes | Yes | Yes | FreeBSD | Active |
| Rhythmbox | Yes | No | No | No | Active |
| node-daapd | Yes | No | No | No | Dormant |
| Wild Media Server (UPnP, DLNA, HTTP) | Yes | Yes | Yes | No | Active |
| canary | Yes | Yes | No | No | Active |
| dmapd | Yes | No | No | No | Active |