Posted By Quentin Carnicelli on August 17th, 2005
While doing some work on Airfoil today, I was looking through connection logs of iTunes and an AirPort Express, when I noticed something interesting:
IP 192.168.0.233.iad2 > 192.168.0.2.daap: tcp 27
0x0000: 4500 004f 1acc 4000 4006 9da1 c0a8 00e9 E..O..@.@.......
0x0010: c0a8 0002 0407 0e69 57a2 6225 bff5 a832 .......iW.b%...2
0x0020: 8018 43e0 a991 0000 0101 080a 0008 3ded ..C...........=.
0x0030: 3aeb 3fe9 4745 5420 2f73 6572 7665 722d :.?.GET./server-
0x0040: 696e 666f 2048 5454 502f 312e 310d 0a94 info.HTTP/1.1...
0x0050: 3766 02 7f.
That’s my AirPort Express, sending a a DAAP “GET /server-info” request back to my PowerMac (DAAP being the protocol iTunes Sharing uses).
Also, there are two new RTSP headers that iTunes sends with AirTunes requests:
User-Agent: iTunes/4.9 (Macintosh; N; PPC)
DACP-ID and Active-Remote, the new ones, both seem to be related to the DAAP requests.
I have never seen an AirPort Express speak DAAP back to its host computer. It seems to be new from the AirPort v4.2 update (AirPort Express firmware v6.2), as I wasn’t seeing those new RTSP headers a month or two back when I was doing similar work.
From my ten minutes of playing with it, it kind of appears that the AirPort Express uses DAAP to grab the track title data of the currently playing song. Although it isn’t consistent about getting them, so I’m probably wrong about that.
Looks like the meta-data is just delievered from iTunes through a custom RTCP packet, but the data is formatted as a DAAP item list. So why the AirPort Express is asking for the host DAAP server status is still unclear.
Hopefully someone with some more time and better Ethereal skills then I can unravel this some more.