The sections that follow describe the various aspects of the IPP support model.
IPP contains two basic object types: Printer and Job. Each object type contains characteristics of a real printer or a real print job. Each object type is defined as a set of possible attributes that can be supported by that particular object type.
To enable all Printer and Job objects to be unambiguously referenced, they are all identified by a Uniform Resource Identifier (URI). The URI concept and implementation as an identifier is useful because it provides a means of uniquely identifying both the method of communicating with the print service (IPP) and a distinct network identifier for a printer queue (//server/printers/queue) or job.
When a print request is created, the IPP protocol message generated must contain the printer-uri of the Printer object the operation is to be performed against. Possible values for a printer-uri can be retrieved from a printer object or naming service printer-uri-supported attribute.
The Printer object is the main object in the IPP model. The Printer object provides the server-side support for IPP. The Printer object contains the functions that are normally associated with physical output devices. These functions include spooling, scheduling, transformation, and managing of multiple devices that are associated with the print server. Printer objects are uniquely identified by a printer-uri. They can be registered as entries in a directory for the purpose of searching and locating static information about the Printer object, such as name, context, and printer capabilities. Dynamic information, for example, the number of jobs that are queued to the printer, errors and warnings, are associated with the Printer object itself.
A Printer object can be used to represent a real or virtual device, as long as the semantics are consistent with those of a Printer object.
IPP clients implement the protocol on the client-side, providing you, or a program running on your behalf, the ability to query Printer objects for the purpose of submitting and managing print jobs. The IPP server is the part of the Printer object that implements the application semantics of the print service. Printer objects can be embedded in an output device or they can be implemented on network host that communicates with an output device.
When a job is submitted to a Printer object, the Printer object validates the attributes in the request and then creates the Job object. When you query a job status or monitor its progress, you are interacting with the Job object. If you cancel a print job, you are using the Job objects's Cancel-job operation. For more information about Job object operations, see IPP Operation Keywords.
A Job object is used to model a print job. Job objects contain documents. The information that is required to create a Job object is sent to the print sever in the form of a create request when you initiate a print request through the IPP client to the Printer object. The Printer object validates the create request, and if accepted, the Printer object then creates a new Job object. This object is uniquely identified by a combination of printer-uri and job-id attributes or a job-uri attribute. See IPP Operation Keywords for more details.