tech-invite   World Map     

3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search

RFC 8011

Proposed STD
Pages: 221
Top     in Index     Prev     Next
in Group Index     Prev in Group     Next in Group     Group: ~proto

Internet Printing Protocol/1.1: Model and Semantics

Part 1 of 12, p. 1 to 14
None       Next Section

Obsoletes:    2911    3381    3382


Top       ToC       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.

[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       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       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       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       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       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       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       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       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       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       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       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       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 Section