In the discovery process, the Client assembles one or more Functional Unit Description Records detailing the functional and capabilities it is looking for. This can be as specific or as broad as necessary. For example, if the Client is looking for any type of printer, it specifies a Print Functional Unit Description Record containing no attributes. However, if it is looking for a color PostScript printer, the attributes for data steam support and color support would be included in the Requester Functional Unit Description Record.
If more than one function is being sought, additional Functional Unit Description Records would be assembled by the Client, packaged as a Service Description Record and sent to the Server.
The server compares this Requester Functional Unit Description Record against the Registered Functional Units contained therein. The Compare ID specified for each attribute is used to perform the compare function. If the compare is successful, a new Functional Unit Description Record is generated. Called the Compare Functional Unit Description Record, it is basically the union of the Requested and Registered Functional Unit Description Records. If there is no compare, an empty Functional Unit Description Record is returned.