RFC 2911:Internet Printing Protocol/1.1: Model and...
RFC-Ref

1. Introduction

   The Internet Printing Protocol (IPP) is an application level protocol
   that can be used for distributed printing using Internet tools and
   technologies.  IPP version 1.1 (IPP/1.1) focuses primarily on end
   user functionality with a few administrative operations included.
   This document is just one of a suite of documents that fully define
   IPP.  The full set of IPP documents includes:

     Design Goals for an Internet Printing Protocol [RFC2567]
     Rationale for the Structure and Model and Protocol for the Internet
     Printing Protocol [RFC2568]
     Internet Printing Protocol/1.1: Model and Semantics (this document)
     Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
     Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
     Mapping between LPD and IPP Protocols [RFC2569]

   Anyone reading these documents for the first time is strongly
   encouraged to read the IPP documents in the above order.

   This document is laid out as follows:

   - The rest of Section 1 is an introduction to the IPP simplified
     model for distributed printing.
   - Section 2 introduces the object types covered in the model with
     their basic behaviors, attributes, and interactions.
   - Section 3 defines the operations included in IPP/1.1.  IPP
     operations are synchronous, therefore, for each operation, there is
     a both request and a response.
   - Section 4 defines the attributes (and their syntaxes) that are used
     in the model.
   - Sections 5 - 6 summarizes the implementation conformance
     requirements for objects that support the protocol and IANA
     considerations, respectively.
   - Sections 7 - 11 cover the Internationalization and Security
     considerations as well as References, Author contact information,
     and Formats for Registration Proposals.
   - Sections 12 - 14 are appendices that cover Terminology, Status
     Codes and Messages, and "media" keyword values.

       Note: This document uses terms such as "attributes", "keywords",
       and "support".  These terms have special meaning and are defined
       in the model terminology section 12.2.  Capitalized terms, such
       as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, MAY, NEED NOT,
       and OPTIONAL, have special meaning relating to conformance.
       These terms are defined in section 12.1 on conformance
       terminology, most of which is taken from RFC 2119 [RFC2119].

   - Section 15 is an appendix that helps to clarify the effects of
     interactions between related attributes and their values.
   - Section 16 is an appendix that enumerates the subset of Printer
     attributes that form a generic directory schema.  These attributes
     are useful when registering a Printer so that a client can find the
     Printer not just by name, but by filtered searches as well.
   - Section 17 is an appendix summarizing the additions and changes
     from the IPP/1.0 "Model and Semantics" document [RFC2566] to make
     this IPP/1.1 document.
   - Section 18 is the full copyright notice.

1.1. Simplified Printing Model

   In order to achieve its goal of realizing a workable printing
   protocol for the Internet, the Internet Printing Protocol (IPP) is
   based on a simplified printing model that abstracts the many
   components of real world printing solutions.  The Internet is a
   distributed computing environment where requesters of print services
   (clients, applications, printer drivers, etc.) cooperate and interact
   with print service providers.  This model and semantics document
   describes a simple, abstract model for IPP even though the underlying
   configurations may be complex "n-tier" client/server systems.  An
   important simplifying step in the IPP model is to expose only the key
   objects and interfaces required for printing.  The model described in
   this model document does not include features, interfaces, and
   relationships that are beyond the scope of the first version of IPP
   (IPP/1.1).  IPP/1.1 incorporates many of the relevant ideas and
   lessons learned from other specification and development efforts
   [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] [SWP].  IPP is
   heavily influenced by the printing model introduced in the Document
   Printing Application (DPA) [ISO10175] standard.  Although DPA
   specifies both end user and administrative features, IPP version 1.1
   (IPP/1.1) focuses primarily on end user functionality with a few
   additional OPTIONAL operator operations.

   The IPP/1.1 model encapsulates the important components of
   distributed printing into two object types:

      - Printer (Section 2.1)
      - Job (Section 2.2)

   Each object type has an associated set of operations (see section 3)
   and attributes (see section 4).

   It is important, however, to understand that in real system
   implementations (which lie underneath the abstracted IPP/1.1 model),
   there are other components of a print service which are not
   explicitly defined in the IPP/1.1 model. The following figure
   illustrates where IPP/1.1 fits with respect to these other
   components.

                                +--------------+
                                |  Application |
                      o         +. . . . . . . |
                     \|/        |   Spooler    |
                     / \        +. . . . . . . |   +---------+
                   End-User     | Print Driver |---|  File   |
         +-----------+ +-----+  +------+-------+   +----+----+
         |  Browser  | | GUI |         |                |
         +-----+-----+ +--+--+         |                |
               |          |            |                |
               |      +---+------------+---+            |
   N   D   S   |      |      IPP Client    |------------+
   O   I   E   |      +---------+----------+
   T   R   C   |                |
   I   E   U   |
   F   C   R   -------------- Transport ------------------
   I   T   I
   C   O   T                    |         --+
   A   R   Y           +--------+--------+  |
   T   Y               |    IPP Server   |  |
   I                   +--------+--------+  |
   O                            |           |
   N                   +-----------------+  | IPP Printer
                       |  Print Service  |  |
                       +-----------------+  |
                                |         --+
                       +-----------------+
                       | Output Device(s)|
                       +-----------------+

   An IPP Printer object encapsulates the functions normally associated
   with physical output devices along with the spooling, scheduling and
   multiple device management functions often associated with a print
   server. Printer objects are optionally registered as entries in a
   directory where end users find and select them based on some sort of
   filtered and context based searching mechanism (see section 16).  The
   directory is used to store relatively static information about the
   Printer, allowing end users to search for and find Printers that
   match their search criteria, for example: name, context, printer
   capabilities, etc.  The more dynamic information, such as state,
   currently loaded and ready media, number of jobs at the Printer,
   errors, warnings, and so forth, is directly associated with the
   Printer object itself rather than with the entry in the directory
   which only represents the Printer object.

   IPP clients implement the IPP protocol on the client side and give
   end users (or programs running on behalf of end users) the ability to
   query Printer objects and submit and manage print jobs.  An IPP
   server is just that part of the Printer object that implements the
   server-side protocol.  The rest of the Printer object implements (or
   gateways into) the application semantics of the print service itself.
   The Printer objects may be embedded in an output device or may be
   implemented on a host on the network that communicates with an output
   device.

   When a job is submitted to the Printer object and the Printer object
   validates the attributes in the submission request, the Printer
   object creates a new Job object.  The end user then interacts with
   this new Job object to query its status and monitor the progress of
   the job.  An end user can also cancel their print jobs by using the
   Job object's Cancel-Job operation.  An end-user can also hold,
   release, and restart their print jobs using the Job object's OPTIONAL
   Hold-Job, Release-Job, and Restart-Job operations, if implemented.

   A privileged operator or administrator of a Printer object can
   cancel, hold, release, and restart any user's job using the REQUIRED
   Cancel-Job and the OPTIONAL Hold-Job, Release-Job, and Restart-Job
   operations.  In additional privileged operator or administrator of a
   Printer object can pause, resume, or purge (jobs from) a Printer
   object using the OPTIONAL Pause-Printer, Resume-Printer, and Purge-
   Jobs operations, if implemented.

   The notification service is out of scope for this IPP/1.1 document,
   but using such a notification service, the end user is able to
   register for and receive Printer specific and Job specific events.
   An end user can query the status of Printer objects and can follow
   the progress of Job objects by polling using the Get-Printer-
   Attributes, Get-Jobs, and Get-Job-Attributes operations.

Google
Web
RFC-Ref