Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 8011

Internet Printing Protocol/1.1: Model and Semantics

Pages: 221
Internet Standard: 92
Errata
Obsoletes:  291133813382
Part 1 of 12 – Pages 1 to 14
None   None   Next

Top   ToC   RFC8011 - Page 1
Internet Engineering Task Force (IETF)                          M. Sweet
Request for Comments: 8011                                    Apple Inc.
Obsoletes: 2911, 3381, 3382                                  I. McDonald
Category: Standards Track                               High North, Inc.
ISSN: 2070-1721                                             January 2017


          Internet Printing Protocol/1.1: Model and Semantics

Abstract

The Internet Printing Protocol (IPP) is an application-level protocol for distributed printing using Internet tools and technologies. This document describes a simplified model consisting of abstract objects, attributes, and operations that is independent of encoding and transport. The model consists of several objects, including Printers and Jobs. Jobs optionally support multiple Documents. IPP semantics allow End Users and Operators to query Printer capabilities; submit Print Jobs; inquire about the status of Print Jobs and Printers; and cancel, hold, and release Print Jobs. IPP semantics also allow Operators to pause and resume Jobs and Printers. Security, internationalization, and directory issues are also addressed by the model and semantics. The IPP message encoding and transport are described in "Internet Printing Protocol/1.1: Encoding and Transport" (RFC 8010). This document obsoletes RFCs 2911, 3381, and 3382. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc8011.
Top   ToC   RFC8011 - Page 2
Copyright Notice

   Copyright (c) 2017 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.
Top   ToC   RFC8011 - Page 3

Table of Contents

1. Introduction ....................................................9 1.1. Simplified Printing Model .................................12 2. Conventions Used in This Document ..............................15 2.1. Requirements Language .....................................15 2.2. Printing Terminology ......................................15 2.3. Model Terminology .........................................16 2.3.1. Administrator ......................................16 2.3.2. Attributes .........................................16 2.3.2.1. Attribute Group Name ......................16 2.3.2.2. Attribute Name ............................16 2.3.2.3. Attribute Syntax ..........................16 2.3.2.4. Attribute Value ...........................17 2.3.3. End User ...........................................17 2.3.4. Impression .........................................17 2.3.5. Input Page .........................................17 2.3.6. Job Creation Operation .............................17 2.3.7. Keyword ............................................17 2.3.8. Media Sheet ........................................18 2.3.9. Operator ...........................................18 2.3.10. Set ...............................................18 2.3.11. Support of Attributes .............................18 2.3.12. Terminating State .................................21 2.4. Abbreviations .............................................21 3. IPP Objects ....................................................22 3.1. Printer Object ............................................22 3.2. Job Object ................................................25 3.3. Object Relationships ......................................25 3.4. Object Identity ...........................................26 4. IPP Operations .................................................29 4.1. Common Semantics ..........................................30 4.1.1. Required Parameters ................................30 4.1.2. Operation IDs and Request IDs ......................31 4.1.3. Attributes .........................................31 4.1.4. Character Set and Natural Language Operation Attributes ...............................33 4.1.4.1. Request Operation Attributes ..............34 4.1.4.2. Response Operation Attributes .............38 4.1.5. Operation Targets ..................................39 4.1.6. Operation Response Status-Code Values and Status Messages ....................................41 4.1.6.1. "status-code" (type2 enum) ................41 4.1.6.2. "status-message" (text(255)) ..............42 4.1.6.3. "detailed-status-message" (text(MAX)) .....43 4.1.6.4. "document-access-error" (text(MAX)) .......43
Top   ToC   RFC8011 - Page 4
           4.1.7. Unsupported Attributes .............................44
           4.1.8. Versions ...........................................45
           4.1.9. Job Creation Operations ............................48
      4.2. Printer Operations ........................................50
           4.2.1. Print-Job Operation ................................51
                  4.2.1.1. Print-Job Request .........................51
                  4.2.1.2. Print-Job Response ........................56
           4.2.2. Print-URI Operation ................................58
           4.2.3. Validate-Job Operation .............................59
           4.2.4. Create-Job Operation ...............................59
           4.2.5. Get-Printer-Attributes Operation ...................60
                  4.2.5.1. Get-Printer-Attributes Request ............61
                  4.2.5.2. Get-Printer-Attributes Response ...........63
           4.2.6. Get-Jobs Operation .................................64
                  4.2.6.1. Get-Jobs Request ..........................65
                  4.2.6.2. Get-Jobs Response .........................66
           4.2.7. Pause-Printer Operation ............................68
                  4.2.7.1. Pause-Printer Request .....................71
                  4.2.7.2. Pause-Printer Response ....................71
           4.2.8. Resume-Printer Operation ...........................72
           4.2.9. Purge-Jobs Operation ...............................73
      4.3. Job Operations ............................................73
           4.3.1. Send-Document Operation ............................74
                  4.3.1.1. Send-Document Request .....................75
                  4.3.1.2. Send-Document Response ....................77
           4.3.2. Send-URI Operation .................................78
           4.3.3. Cancel-Job Operation ...............................78
                  4.3.3.1. Cancel-Job Request ........................80
                  4.3.3.2. Cancel-Job Response .......................81
           4.3.4. Get-Job-Attributes Operation .......................81
                  4.3.4.1. Get-Job-Attributes Request ................82
                  4.3.4.2. Get-Job-Attributes Response ...............83
           4.3.5. Hold-Job Operation .................................84
                  4.3.5.1. Hold-Job Request ..........................86
                  4.3.5.2. Hold-Job Response .........................87
           4.3.6. Release-Job Operation ..............................87
           4.3.7. Restart-Job Operation ..............................89
                  4.3.7.1. Restart-Job Request .......................91
                  4.3.7.2. Restart-Job Response ......................92
   5. Object Attributes ..............................................92
      5.1. Attribute Syntaxes ........................................92
           5.1.1. Out-of-Band Values - 'unknown',
                  'unsupported', and 'no-value' ......................93
           5.1.2. 'text' .............................................93
                  5.1.2.1. 'textWithoutLanguage' .....................94
                  5.1.2.2. 'textWithLanguage' ........................94
Top   ToC   RFC8011 - Page 5
           5.1.3. 'name' .............................................95
                  5.1.3.1. 'nameWithoutLanguage' .....................96
                  5.1.3.2. 'nameWithLanguage' ........................96
                  5.1.3.3. Matching 'name' Attribute Values ..........97
           5.1.4. 'keyword' ..........................................98
           5.1.5. 'enum' .............................................99
           5.1.6. 'uri' .............................................100
           5.1.7. 'uriScheme' .......................................100
           5.1.8. 'charset' .........................................101
           5.1.9. 'naturalLanguage' .................................102
           5.1.10. 'mimeMediaType' ..................................102
                  5.1.10.1. 'application/octet-stream' -
                            Auto-Sensing the Document Format ........103
           5.1.11. 'octetString' ....................................104
           5.1.12. 'boolean' ........................................104
           5.1.13. 'integer' ........................................104
           5.1.14. 'rangeOfInteger' .................................105
           5.1.15. 'dateTime' .......................................105
           5.1.16. 'resolution' .....................................105
           5.1.17. 'collection' .....................................105
           5.1.18. '1setOf X' .......................................106
      5.2. Job Template Attributes ..................................106
           5.2.1. job-priority (integer(1:100)) .....................109
           5.2.2. job-hold-until (type2 keyword | name(MAX)) ........111
           5.2.3. job-sheets (type2 keyword | name(MAX)) ............112
           5.2.4. multiple-document-handling (type2 keyword) ........113
           5.2.5. copies (integer(1:MAX)) ...........................115
           5.2.6. finishings (1setOf type2 enum) ....................115
           5.2.7. page-ranges (1setOf rangeOfInteger(1:MAX)) ........118
           5.2.8. sides (type2 keyword) .............................119
           5.2.9. number-up (integer(1:MAX)) ........................120
           5.2.10. orientation-requested (type2 enum) ...............120
           5.2.11. media (type2 keyword | name(MAX)) ................123
           5.2.12. printer-resolution (resolution) ..................124
           5.2.13. print-quality (type2 enum) .......................124
      5.3. Job Description and Status Attributes ....................124
           5.3.1. job-id (integer(1:MAX)) ...........................126
           5.3.2. job-uri (uri) .....................................126
           5.3.3. job-printer-uri (uri) .............................127
           5.3.4. job-more-info (uri) ...............................127
           5.3.5. job-name (name(MAX)) ..............................127
           5.3.6. job-originating-user-name (name(MAX)) .............128
           5.3.7. job-state (type1 enum) ............................128
                  5.3.7.1. Forwarding Servers .......................132
                  5.3.7.2. Partitioning of Job States ...............132
           5.3.8. job-state-reasons (1setOf type2 keyword) ..........133
           5.3.9. job-state-message (text(MAX)) .....................138
           5.3.10. job-detailed-status-messages (1setOf text(MAX)) ..139
Top   ToC   RFC8011 - Page 6
           5.3.11. job-document-access-errors (1setOf text(MAX)) ....139
           5.3.12. number-of-documents (integer(0:MAX)) .............139
           5.3.13. output-device-assigned (name(127)) ...............139
           5.3.14. Event Time Job Status Attributes .................140
                  5.3.14.1. time-at-creation (integer(MIN:MAX)) .....140
                  5.3.14.2. time-at-processing (integer(MIN:MAX)) ...141
                  5.3.14.3. time-at-completed (integer(MIN:MAX)) ....141
                  5.3.14.4. job-printer-up-time (integer(1:MAX)) ....141
                  5.3.14.5. date-time-at-creation
                            (dateTime|unknown) ......................141
                  5.3.14.6. date-time-at-processing
                            (dateTime|unknown|no-value) .............141
                  5.3.14.7. date-time-at-completed
                            (dateTime|unknown|no-value) .............141
           5.3.15. number-of-intervening-jobs (integer(0:MAX)) ......142
           5.3.16. job-message-from-operator (text(127)) ............142
           5.3.17. Job Size Attributes ..............................142
                  5.3.17.1. job-k-octets (integer(0:MAX)) ...........142
                  5.3.17.2. job-impressions (integer(0:MAX)) ........143
                  5.3.17.3. job-media-sheets (integer(1:MAX)) .......143
           5.3.18. Job Progress Attributes ..........................144
                  5.3.18.1. job-k-octets-processed
                            (integer(0:MAX)) ........................144
                  5.3.18.2. job-impressions-completed
                            (integer(0:MAX)) ........................144
                  5.3.18.3. job-media-sheets-completed
                            (integer(0:MAX)) ........................144
           5.3.19. attributes-charset (charset) .....................144
           5.3.20. attributes-natural-language (naturalLanguage) ....145
      5.4. Printer Description and Status Attributes ................145
           5.4.1. printer-uri-supported (1setOf uri) ................147
           5.4.2. uri-authentication-supported (1setOf type2
                  keyword) ..........................................148
           5.4.3. uri-security-supported (1setOf type2 keyword) .....149
           5.4.4. printer-name (name(127)) ..........................150
           5.4.5. printer-location (text(127)) ......................150
           5.4.6. printer-info (text(127)) ..........................151
           5.4.7. printer-more-info (uri) ...........................151
           5.4.8. printer-driver-installer (uri) ....................151
           5.4.9. printer-make-and-model (text(127)) ................151
           5.4.10. printer-more-info-manufacturer (uri) .............151
           5.4.11. printer-state (type1 enum) .......................152
           5.4.12. printer-state-reasons (1setOf type2 keyword) .....152
           5.4.13. printer-state-message (text(MAX)) ................157
           5.4.14. ipp-versions-supported (1setOf type2 keyword) ....157
           5.4.15. operations-supported (1setOf type2 enum) .........157
Top   ToC   RFC8011 - Page 7
           5.4.16. multiple-document-jobs-supported (boolean) .......159
           5.4.17. charset-configured (charset) .....................159
           5.4.18. charset-supported (1setOf charset) ...............159
           5.4.19. natural-language-configured (naturalLanguage) ....160
           5.4.20. generated-natural-language-supported
                   (1setOf naturalLanguage) .........................160
           5.4.21. document-format-default (mimeMediaType) ..........160
           5.4.22. document-format-supported (1setOf
                   mimeMediaType) ...................................161
           5.4.23. printer-is-accepting-jobs (boolean) ..............161
           5.4.24. queued-job-count (integer(0:MAX)) ................161
           5.4.25. printer-message-from-operator (text(127)) ........161
           5.4.26. color-supported (boolean) ........................161
           5.4.27. reference-uri-schemes-supported (1setOf
                   uriScheme) .......................................162
           5.4.28. pdl-override-supported (type2 keyword) ...........162
           5.4.29. printer-up-time (integer(1:MAX)) .................162
           5.4.30. printer-current-time (dateTime|unknown) ..........163
           5.4.31. multiple-operation-time-out (integer(1:MAX)) .....164
           5.4.32. compression-supported (1setOf type2 keyword) .....164
           5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) ...165
           5.4.34. job-impressions-supported
                   (rangeOfInteger(0:MAX)) ..........................165
           5.4.35. job-media-sheets-supported
                   (rangeOfInteger(1:MAX)) ..........................165
           5.4.36. pages-per-minute (integer(0:MAX)) ................165
           5.4.37. pages-per-minute-color (integer(0:MAX)) ..........165
   6. Conformance ...................................................166
      6.1. Client Conformance Requirements ..........................166
      6.2. IPP Object Conformance Requirements ......................168
           6.2.1. Objects ...........................................168
           6.2.2. Operations ........................................168
           6.2.3. IPP Object Attributes .............................170
           6.2.4. Versions ..........................................170
           6.2.5. Extensions ........................................171
           6.2.6. Attribute Syntaxes ................................171
           6.2.7. Security ..........................................172
      6.3. Charset and Natural Language Requirements ................172
   7. IANA Considerations ...........................................173
      7.1. Object Extensions ........................................174
      7.2. Attribute Extensibility ..................................174
      7.3. Keyword Extensibility ....................................175
      7.4. Enum Extensibility .......................................176
      7.5. Attribute Group Extensibility ............................176
      7.6. Out-of-Band Attribute Value Extensibility ................176
      7.7. Attribute Syntax Extensibility ...........................177
      7.8. Operation Extensibility ..................................177
      7.9. Status-Code Extensibility ................................178
Top   ToC   RFC8011 - Page 8
   8. Internationalization Considerations ...........................179
   9. Security Considerations .......................................183
      9.1. Security Scenarios .......................................184
           9.1.1. Client and Server in the Same Security Domain .....184
           9.1.2. Client and Server in Different Security Domains ...184
           9.1.3. Print by Reference ................................184
      9.2. URIs in Operation, Job, and Printer Attributes ...........185
      9.3. URIs for Each Authentication Mechanism ...................185
      9.4. Restricted Queries .......................................186
      9.5. Operations Performed by Operators and Administrators .....186
      9.6. Queries on Jobs Submitted Using Non-IPP Protocols ........186
   10. Changes since RFC 2911 .......................................187
   11. References ...................................................188
      11.1. Normative References ....................................188
      11.2. Informative References ..................................194
   Appendix A. Formats for IPP Registration Proposals ...............197
     A.1. Attribute Registration ....................................197
     A.2. type2 'keyword' Attribute Value Registration ..............198
     A.3. type2 'enum' Attribute Value Registration .................198
     A.4. Operation Registration ....................................199
     A.5. Status-Code Registration ..................................199
   Appendix B. Status-Code Values and Suggested Status-Code
               Messages .............................................200
     B.1. Status-Code Values ........................................201
       B.1.1. Informational .........................................201
       B.1.2. Successful Status-Code Values .........................201
         B.1.2.1. successful-ok (0x0000) ............................201
         B.1.2.2. successful-ok-ignored-or-substituted-attributes
                  (0x0001) ..........................................202
         B.1.2.3. successful-ok-conflicting-attributes (0x0002) .....202
       B.1.3. Redirection Status-Code Values ........................202
       B.1.4. Client Error Status-Code Values .......................202
         B.1.4.1. client-error-bad-request (0x0400) .................203
         B.1.4.2. client-error-forbidden (0x0401) ...................203
         B.1.4.3. client-error-not-authenticated (0x0402) ...........203
         B.1.4.4. client-error-not-authorized (0x0403) ..............203
         B.1.4.5. client-error-not-possible (0x0404) ................203
         B.1.4.6. client-error-timeout (0x0405) .....................204
         B.1.4.7. client-error-not-found (0x0406) ...................204
         B.1.4.8. client-error-gone (0x0407) ........................204
         B.1.4.9. client-error-request-entity-too-large (0x0408) ....205
         B.1.4.10. client-error-request-value-too-long (0x0409) .....205
         B.1.4.11. client-error-document-format-not-supported
                   (0x040a) .........................................205
         B.1.4.12. client-error-attributes-or-values-not-supported
                   (0x040b) .........................................206
         B.1.4.13. client-error-uri-scheme-not-supported (0x040c) ...206
         B.1.4.14. client-error-charset-not-supported (0x040d) ......206
Top   ToC   RFC8011 - Page 9
         B.1.4.15. client-error-conflicting-attributes (0x040e) .....207
         B.1.4.16. client-error-compression-not-supported (0x040f) ..207
         B.1.4.17. client-error-compression-error (0x0410) ..........207
         B.1.4.18. client-error-document-format-error (0x0411) ......207
         B.1.4.19. client-error-document-access-error (0x0412) ......207
       B.1.5. Server Error Status-Code Values .......................208
         B.1.5.1. server-error-internal-error (0x0500) ..............208
         B.1.5.2. server-error-operation-not-supported (0x0501) .....208
         B.1.5.3. server-error-service-unavailable (0x0502) .........208
         B.1.5.4. server-error-version-not-supported (0x0503) .......209
         B.1.5.5. server-error-device-error (0x0504) ................209
         B.1.5.6. server-error-temporary-error (0x0505) .............210
         B.1.5.7. server-error-not-accepting-jobs (0x0506) ..........210
         B.1.5.8. server-error-busy (0x0507) ........................210
         B.1.5.9. server-error-job-canceled (0x0508) ................210
         B.1.5.10. server-error-multiple-document-jobs-not-supported
                   (0x0509) .........................................210
     B.2. Status-Code Values for IPP Operations .....................211
   Appendix C. Processing IPP Attributes ............................213
     C.1. Fidelity ..................................................213
     C.2. Page Description Language (PDL) Override ..................215
     C.3. Using Job Template Attributes during Document Processing ..217
   Appendix D. Generic Directory Schema .............................218
   Acknowledgements .................................................221
   Authors' Addresses ...............................................221

1. Introduction

The Internet Printing Protocol (IPP) is an application-level protocol 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. IPP versions 2.0, 2.1, and 2.2 provide many new operations and are defined separately. This document is just one of a suite of documents that fully define IPP. The full set of IETF IPP documents includes: Design Goals for an Internet Printing Protocol [RFC2567] Rationale for the Structure of the 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 [RFC8010] Internet Printing Protocol/1.1: Implementor's Guide [RFC3196]
Top   ToC   RFC8011 - Page 10
      Internet Printing Protocol/1.1: IPP URL Scheme [RFC3510]

      Internet Printing Protocol (IPP) over HTTPS Transport Binding and
      the 'ipps' URI Scheme [RFC7472]

      Internet Printing Protocol (IPP): Requirements for Job, Printer,
      and Device Administrative Operations [RFC3239]

      Internet Printing Protocol (IPP): Job and Printer Set Operations
      [RFC3380]

      Internet Printing Protocol (IPP): Job and Printer Administrative
      Operations [RFC3998]

      Internet Printing Protocol (IPP): Requirements for IPP
      Notifications [RFC3997]

      Internet Printing Protocol (IPP): Event Notifications and
      Subscriptions [RFC3995]

      Internet Printing Protocol (IPP): The 'ippget' Delivery Method for
      Event Notifications [RFC3996]

      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.  Additional
   IPP specifications have been published by the IEEE-ISTO Printer
   Working Group's IPP Workgroup [PWG-IPP-WG].  The following standards
   are highly recommended reading:

      PWG Media Standardized Names 2.0 (MSN2) [PWG5101.1]

      IPP Finishings 2.0 (FIN) [PWG5100.1]

      Internet Printing Protocol (IPP): "output-bin" attribute extension
      [PWG5100.2]

      Internet Printing Protocol (IPP): Production Printing Attributes -
      Set 1 [PWG5100.3] (for "media-col" Job Template attribute)

      Standard for The Internet Printing Protocol (IPP): Document Object
      [PWG5100.5]

      Standard for The Internet Printing Protocol (IPP): Page Overrides
      [PWG5100.6]
Top   ToC   RFC8011 - Page 11
      Standard for The Internet Printing Protocol (IPP): Job Extensions
      [PWG5100.7]

      Standard for Internet Printing Protocol (IPP): "-actual"
      attributes [PWG5100.8]

      Internet Printing Protocol (IPP): Printer State Extensions v1.0
      [PWG5100.9]

      Internet Printing Protocol (IPP): Job and Printer Extensions -
      Set 2 (JPS2) [PWG5100.11]

      IPP Version 2.0, 2.1, and 2.2 [PWG5100.12]

      IPP: Job and Printer Extensions - Set 3 (JPS3) [PWG5100.13]

      IPP Everywhere [PWG5100.14]

      IPP FaxOut Service [PWG5100.15]

      IPP Transaction-Based Printing Extensions [PWG5100.16]

      IPP Scan Service (SCAN) [PWG5100.17]

      IPP Shared Infrastructure Extensions (INFRA) [PWG5100.18]

      IPP Implementor's Guide v2.0 (IG) [PWG5100.19]

   This document is organized as follows:

   o  The rest of Section 1 is an introduction to the IPP simplified
      model for distributed printing;

   o  Section 2 defines the terminology and conventions used within this
      document;

   o  Section 3 introduces the object types covered in this document
      with their basic behaviors, attributes, and interactions;

   o  Section 4 defines the core operations for IPP/1.1.  IPP operations
      are synchronous -- each operation has both a request and a
      response;

   o  Section 5 defines the core attributes (and their syntaxes) that
      are used in the model;
Top   ToC   RFC8011 - Page 12
   o  Sections 6 and 7 summarize the implementation conformance
      requirements for objects that support the protocol and IANA
      considerations, respectively;

   o  Sections 8 and 9 cover the internationalization and security
      considerations for IPP; and

   o  The appendices provide a reference for status-code values,
      processing of IPP attributes, and the generic directory schema.

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 document (sometimes referred to here as the "Model and Semantics" document) describes a simple, abstract model for IPP even though the underlying configurations can 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 document does not include features, interfaces, and relationships that are beyond the scope of 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/1.1 focuses primarily on End User functionality with a few additional OPTIONAL operations for Administrators and Operators. The IPP Model encapsulates the important components of distributed printing into the following IPP object types: o Printer (Section 3.1) o Job (Section 3.2) o Document (see [PWG5100.5]) o Subscription (see [RFC3995]) Each object type has an associated set of operations (see Section 4) and attributes (see Section 5).
Top   ToC   RFC8011 - Page 13
   It is important, however, to understand that in real system
   implementations (which lie underneath the abstracted IPP Model),
   there are other components of a print service that are not explicitly
   defined in the IPP Model.  The following figure illustrates where IPP
   fits with respect to these other components.

                                +----------------+
                                |   Application  |
                      o         + . . . . . . .  |
                     \|/        |    Spooler     |
                     / \        + . . . . . . .  |   +---------+
                   End User     | Printer 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)|
                       +-----------------+

                            Figure 1: IPP Model

   An IPP Printer object ("Printer") 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.  Printers are optionally registered as entries
   in a directory where End Users find and select them based on some
   sort of filtered context-based searching mechanism (see Appendix D).
   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, location, context,
   Printer capabilities, etc.  The more dynamic information, such as
Top   ToC   RFC8011 - Page 14
   state, currently loaded and ready media, number of Jobs at the
   Printer, errors, warnings, and so forth, is directly associated with
   the Printer itself rather than with the entry in the directory, which
   only references the Printer.

   IPP Clients ("Clients") implement IPP on the Client side and give
   End Users (or programs running on behalf of End Users) the ability to
   query Printers 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.
   Printers can be embedded in an Output Device or can be implemented on
   a host on the network that communicates with an Output Device.

   When a Job is submitted to the Printer and the Printer has validated
   the attributes in the submission request, the Printer creates a new
   IPP Job object ("Job").  The End User then interacts with this new
   Job to query its status and monitor the progress of the Job.  An
   End User can also cancel their Print Jobs by using the Job's
   Cancel-Job operation.  An End User can also hold, release, and
   restart their Print Jobs using the Job's OPTIONAL Hold-Job,
   Release-Job, and Restart-Job operations, if implemented.

   A privileged Operator or Administrator of a Printer 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
   addition, a privileged Operator or Administrator of a Printer can
   pause, resume, or purge (Jobs from) a Printer using the OPTIONAL
   Pause-Printer, Resume-Printer, and Purge-Jobs operations, if
   implemented.

   The notification service is defined in "Internet Printing Protocol
   (IPP): Event Notifications and Subscriptions" [RFC3995].  By using
   such a notification service, the End User is able to register for and
   receive Printer-specific and Job-specific events asynchronously.
   Otherwise, an End User can query the status of Printers and can
   follow the progress of Jobs by polling using the
   Get-Printer-Attributes, Get-Jobs, and Get-Job-Attributes operations.


(next page on part 2)

Next Section