Anwendungen auf dem Client werden als User Agents betrachtet und Dienste als Service Agents. Directory Agents bieten eine Skalierbarkeit (scalability) des Protokolls.
Der User Agent schickt einen SRVRQST (Service Request), in dem die Eigenschaften des gesuchten Services angegeben werden. Als Antwort erhält der User Agent die Adressen aller Dienste im Netzwerk, die seine Anforderungen erfüllen. (siehe Abb. 3.13)
Es ist erlaubt, daß ein User Agent sich direkt an einen Service Agent wendet. In diesem Fall wird der Request als Multicast betrachtet. Service Agents, die eine Anfrage nach einem Service erhalten, den sie anbieten können, schicken ihre Antwort als unicast-reply, sie enthält lediglich die Adresse des Services.
In größeren Netzwerken können ein oder mehrere Directory Agents
verwendet werden. Ein solcher Directory Agent fungiert als Cache.
Für User- und Server Agents gibt es zwei Möglichkeiten, einen Directory Agent zu finden (siehe auch Abb 3.15)
In beiden Fällen bekommen die User Agents vom Directory Agent (DA ) ein Directory Agent Advertisement (DAADVERT ).
Einzelne Dienste werden mit Hilfe von Scopes zusammengefaßt. Scopes sind Arrays, die Dienste beschreiben, welche 'administratively identified' wurden. Ein Scope kann beinhalten:
Einem Service und Directory Agent ist immer ein Scope zugeordnet. Einem User Agent ist normalerweise ein Scope zugeordnet, was dazu führt, daß der Agent auschließlich Dienste dieser (seiner) Gruppenzugehörigkeit auffinden kann. Alternativ darf der User Agent auch ohne Scope konfiguriert werden. In diesem Fall findet er alle Dienste im Netzwerk. (Abb. 3.16)