Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol
The reasoning behind how the Internet Printing Protocol splits into a model, an encoding and an HTTP transport.
Zilles, S., "Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol", RFC 2568, DOI 10.17487/RFC2568, April 1999, <https://www.rfc-editor.org/info/rfc2568>.
@misc{rfc2568,
series = {Request for Comments},
number = 2568,
howpublished = {RFC 2568},
publisher = {RFC Editor},
doi = {10.17487/RFC2568},
url = {https://www.rfc-editor.org/info/rfc2568},
author = {S. Zilles},
title = {{Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol}},
pagetotal = 10,
year = 1999,
month = apr,
} RFC text
Contents
Network Working Group S. Zilles
Request for Comments: 2568 Adobe Systems Inc.
Category: Experimental April 1999
Rationale for the Structure of the Model and Protocol
for the Internet Printing Protocol
Status of this Memo
This memo defines an Experimental Protocol for the Internet
community. It does not specify an Internet standard of any kind.
Discussion and suggestions for improvement are requested.
Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
IESG Note
This document defines an Experimental protocol for the Internet
community. The IESG expects that a revised version of this protocol
will be published as Proposed Standard protocol. The Proposed
Standard, when published, is expected to change from the protocol
defined in this memo. In particular, it is expected that the
standards-track version of the protocol will incorporate strong
authentication and privacy features, and that an "ipp:" URL type will
be defined which supports those security measures. Other changes to
the protocol are also possible. Implementors are warned that future
versions of this protocol may not interoperate with the version of
IPP defined in this document, or if they do interoperate, that some
protocol features may not be available.
The IESG encourages experimentation with this protocol, especially in
combination with Transport Layer Security (TLS) [RFC2246], to help
determine how TLS may effectively be used as a security layer for
IPP.
ABSTRACT
This document is one of a set of documents, which together describe
all aspects of a new Internet Printing Protocol (IPP). IPP is an
application level protocol that can be used for distributed printing
using Internet tools and technologies. This document describes IPP
from a high level view, defines a roadmap for the various documents
that form the suite of IPP specifications, and gives background and
rationale for the IETF working group's major decisions.
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 (this document)
Internet Printing Protocol/1.0: Model and Semantics [RFC2566]
Internet Printing Protocol/1.0: Encoding and Transport [RFC2565]
Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig]
Mapping between LPD and IPP Protocols [RFC2569]
The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, operators, and
administrators. The Design Goals document calls out a subset of end
user requirements that are satisfied in IPP/1.0. Operator and
administrator requirements are out of scope for version 1.0.
The "Internet Printing Protocol/1.0: Model and Semantics" document
describes a simplified model consisting of abstract objects, their
attributes, and their operations that is independent of encoding and
transport. The model consists of a Printer and a Job object. The
Job optionally supports multiple documents. This document also
addresses security, internationalization, and directory issues.
The "Internet Printing Protocol/1.0: Encoding and Transport" document
is a formal mapping of the abstract operations and attributes defined
in the model document onto HTTP/1.1. It defines the encoding rules
for a new Internet media type called "application/ipp".
The "Internet Printing Protocol/1.0: Implementer's Guide" document
gives insight and advice to implementers of IPP clients and IPP
objects. It is intended to help them understand IPP/1.0 and some of
the considerations that may assist them in the design of their client
and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation
for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some
advice to implementers of gateways between IPP and LPD (Line Printer
Daemon) implementations.
1. ARCHITECTURAL OVERVIEW
The Internet Printing Protocol (IPP) is an application level protocol
that can be used for distributed printing on the Internet. This
protocol defines interactions between a client and a server. The
protocol allows a client to inquire about capabilities of a printer,
to submit print jobs and to inquire about and cancel print jobs. The
server for these requests is the Printer; the Printer is an
abstraction of a generic document output device and/or a print
service provider. Thus, the Printer could be a real printing device,
such as a computer printer or fax output device, or it could be a
service that interfaced with output devices.
The protocol 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.0 (IPP/1.0) focuses only on end user functionality.
The architecture for IPP defines (in the Model and Semantics document
[RFC2566]) an abstract Model for the data which is used to control
the printing process and to provide information about the process and
the capabilities of the Printer. This abstract Model is hierarchical
in nature and reflects the structure of the Printer and the Jobs that
may be being processed by the Printer.
The Internet provides a channel between the client and the
server/Printer. Use of this channel requires flattening and
sequencing the hierarchical Model data. Therefore, the IPP also
defines (in the Encoding and Transport document [RFC2565]) an
encoding of the data in the model for transfer between the client and
server. This transfer of data may be either a request or the
response to a request.
Finally, the IPP defines (in the Encoding and Transport document
[RFC2565]) a protocol for transferring the encoded request and
response data between the client and the server/Printer.
An example of a typical interaction would be a request from the
client to create a print job. The client would assemble the Model
data to be associated with that job, such as the name of the job, the
media to use, the number of pages to place on each media instance,
etc. This data would then be encoded according to the Protocol and
would be transmitted according to the Protocol. The server/Printer
would receive the encoded Model data, decode it into a form
understood by the server/Printer and, based on that data, do one of
two things: (1) accept the job or (2) reject the job. In either case,
the server must construct a response in terms of the Model data,
encode that response according to the Protocol and transmit that
encoded Model data as the response to the request using the Protocol.
Another part of the IPP architecture is the Directory Schema
described in the model document. The role of a Directory Schema is to
provide a standard set of attributes which might be used to query a
directory service for the URI of a Printer that is likely to meet the
needs of the client. The IPP architecture also addresses security
issues such as control of access to server/Printers and secure
transmissions of requests, response and the data to be printed.
2. THE PRINTER
Because the (abstract) server/Printer encompasses a wide range of
implementations, it is necessary to make some assumptions about a
minimal implementation. The most likely minimal implementation is one
that is embedded in an output device running a specialized real time
operating system and with limited processing, memory and storage
capabilities. This printer will be connected to the Internet and will
have at least a TCP/IP capability with (likely) SNMP [RFC1905,
RFC1906] support for the Internet connection. In addition, it is
likely the the Printer will be an HTML/HTTP server to allow direct
user access to information about the printer.
3. RATIONALE FOR THE MODEL
The Model [RFC2566] is defined independently of any encoding of the
Model data both to support the likely uses of IPP and to be robust
with respect to the possibility of alternate encoding.
It is expected that a client or server/Printer would represent the
Model data in some data structure within the applications/servers
that support IPP. Therefore, the Model was designed to make that
representation straightforward. Typically a parser or formatter would
be used to convert from or to the encoded data format. Once in an
internal form suitable to a product, the data can be manipulated by
the product. For example, the data sent with a Print Job can be used
to control the processing of that Print Job.
The semantics of IPP are attached to the (abstract) Model.
Therefore, the application/server is not dependent on the encoding of
the Model data, and it is possible to consider alternative mechanisms
and formats by which the data could be transmitted from a client to a
server; for example, a server could have a direct, client-less GUI
interface that might be used to accept some kinds of Print Jobs. This
independence would also allow a different encoding and/or
transmission mechanism to be used if the ones adopted here were shown
to be overly limiting in the future. Such a change could be migrated
into new products as an alternate protocol stack/parser for the Model
data.
Having an abstract Model also allows the Model data to be aligned
with the (abstract) model used in the Printer [RFC1759], Job and Host
Resources MIBs. This provides consistency in interpretation of the
data obtained independently of how the data is accessed, whether via
IPP or via SNMP [RFC1905, RFC1906] and the Printer/Job MIBs.
There is one aspect of the Model that deserves some extra
explanation. There are two ways for identifying a Job object: (a)
with a Job URI and (b) using a combination of the Printer URI and a
Job ID (a 32 bit positive integer). Allowing Job objects to have URIs
allows for flexibility and scalability. For example a job could be
moved from a printer with a large backlog to one with a smaller load
and the job identification, the Job object URI, need not change.
However, many existing printing systems have local models or
interface constraints that force Job objects to be identified using
only a 32-bit positive integer rather than a URI. This numeric Job
ID is only unique within the context of the Printer object to which
the create request was originally submitted. In order to allow both
types of client access to Jobs (either by Job URI or by numeric Job
ID), when the Printer object successfully processes a create request
and creates a new Job, the Printer object generates both a Job URI
and a Job ID for the new Job object. This requirement allows all
clients to access Printer objects and Job objects independent of any
local constraints imposed on the client implementation.
4. RATIONALE FOR THE PROTOCOL
There are two parts to the Protocol: (1) the encoding of the Model
data and (2) the mechanism for transmitting the model data between
client and server.
4.1 The Encoding
To make it simpler to develop embedded printers, a very simple binary
encoding has been chosen. This encoding is adequate to represent the
kinds of data that occur within the Model. It has a simple structure
consisting of sequences of attributes. Each attribute has a name,
prefixed by a name length, and a value. The names are strings
constrained to characters from a subset of ASCII. The values are
either scalars or a sequence of scalars. Each scalar value has a
length specification and a value tag which indicates the type of the
value. The value type has two parts: a major class part, such as
integer or string, and a minor class part which distinguishes the
usage of the major class, such as dateTime string. Tagging of the
values with type information allows for introducing new value types
at some future time.
A fully encoded request/response has a version number, an operation
(for a request) or a status and optionally a status message (for a
response), associated parameters and attributes which are encoded
Model data and, optionally (for a request), print data following the
Model data.
4.2 The Transmission Mechanism
The chosen mechanism for transmitting the encoded Model data is HTTP
1.1 Post (and associated response). No modifications to HTTP 1.1 are
proposed or required. The sole role of the Transmission Mechanism is
to provide a transfer of encoded Model data from/to the client
to/from the server. This could be done using any data delivery
mechanism. The key reasons why HTTP 1.1 Post is used are given below.
The most important of these is the first. With perhaps this
exception, these reasons could be satisfied by other mechanisms.
There is no claim that this list uniquely determines a choice of
mechanism.
1. HTTP 1.0 is already widely deployed and, based on the recent
evidence, HTTP 1.1 is being widely deployed as the manufacturers
release new products. The performance benefits of HTTP 1.1 have
been shown and manufactures are reacting positively.
Wide deployment has meant that many of the problems of making a
protocol work in a wide range of environments from local net to
Intranet to Internet have been solved and will stay solved with
HTTP 1.1 deployment.
2. HTTP 1.1 solves most of the problems that might have required a
new protocol to be developed. HTTP 1.1 allows persistent
connections that make a multi-message protocol be more efficient;
for example it is practical to have separate Create-Job and Send-
Document messages. Chunking allows the transmission of large print
files without having to pre-scan the file to determine the file
length. The accept headers allow the client's protocol and
localization desires to be transmitted with the IPP operations and
data. If the Model were to provide for the redirection of Job
requests, such as Cancel-Job, when a Job is moved, the HTTP
redirect response allows a client to be informed when a Job he is
interested in is moved to another server/Printer for any reason.
3. Most network Printers will be implementing HTTP servers for
reasons other than IPP. These network attached Printers want to
provide information on how to use the printer, its current state,
HELP information, etc. in HTML. This requires having an HTTP
server which would be available to do IPP functions as well.
4. Most of the complexity of HTTP 1.1 is concerned with the
implementation of HTTP proxies and not the implementation of HTTP
clients and/or servers. Work is proceeding in the HTTP Working
Group to help identify what must be done by a server. As the
Encoding and Transport document shows, that is not very much.
5. HTTP implementations provide support for handling URLs that
would have to be provided if a new protocol were defined.
6. An HTTP based solution fits well with the Internet security
mechanisms that are currently deployed or being deployed. HTTP
will run over SSL3. The digest access authentication mechanism of
HTTP 1.1 provides an adequate level of access control. These
solutions are deployed and in practical use; a new solution would
require extensive use to have the same degree of confidence in its
security. Note: SSL3 is not on the IETF standards track.
7. HTTP provides an extensibility model that a new protocol would
have to develop independently. In particular, the headers,
intent-types (via Internet Media Types) and error codes have wide
acceptance and a useful set of definitions and methods for
extension.
8. Although not strictly a reason why IPP should use HTTP as the
transmission protocol, it is extremely helpful that there are many
prototyping tools that work with HTTP and that CGI scripts can be
used to test and debug parts of the protocol.
9. Finally, the POST method was chosen to carry the print data
because its usage for data transmission has been established, it
works and the results are available via CGI scripts or servlets.
Creating a new method would have better identified the intended
use of the POSTed data, but a new method would be more difficult
to deploy. Assigning a new default port for IPP provided the
necessary identification with minimal impact to installed
infrastructure, so was chosen instead.
5. RATIONALE FOR THE DIRECTORY SCHEMA
Successful use of IPP depends on the client finding a suitable IPP
enabled Printer to which to send a IPP requests, such as print a
job. This task is simplified if there is a Directory Service which
can be queried for a suitable Printer. The purpose of the
Directory Schema is to have a standard description of Printer
attributes that can be associated the URI for the printer. These
attributes are a subset of the Model attributes and can be encoded
in the appropriate query syntax for the Directory Service being
used by the client.
6. SECURITY CONSIDERATIONS - RATIONALE FOR SECURITY
Security is an area of active work on the Internet. Complete
solutions to a wide range of security concerns are not yet
available. Therefore, in the design of IPP, the focus has been on
identifying a set of security protocols/features that are
implemented (or currently implementable) and solve real problems
with distributed printing. The two areas that seem appropriate to
support are: (1) authorization to use a Printer and (2) secure
interaction with a printer. The chosen mechanisms are the digest
authentication mechanism of HTTP 1.1 and SSL3 [SSL] secure
communication mechanism.
7. REFERENCES
[ipp-iig] Hastings, T. and C. Manros, "Internet Printing
Protocol/1.0:Implementer's Guide", Work in Progress.
[RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin,
"Mapping between LPD and IPP Protocols", RFC 2569, April
1999.
[RFC2566] deBry, R., Isaacson, S., Hastings, T., Herriot, R. and P.
Powell, "Internet Printing Protocol/1.0: Model and
Semantics", RFC 2566, April 1999.
[RFC2565] Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet
Printing Protocol/1.0: Encoding and Transport", RFC 2565,
April 1999.
[RFC2567] Wright, D., "Design Goals for an Internet Printing
Protocol", RFC 2567, April 1999.
[ISO10175] ISO/IEC 10175 "Document Printing Application (DPA)", June
1996.
[RFC1759] Smith, R., Wright, F., Hastings, T., Zilles, S. and J.
Gyllenskog, "Printer MIB", RFC 1759, March 1995.
[RFC1905] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
"Protocol Operations for Version 2 of the Simple Network
Management Protocol (SNMPv2)", RFC 1905, January 1996.
[RFC1906] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
"Transport Mappings for Version 2 of the Simple Network
Management Protocol (SNMPv2)", RFC 1906, January 1996.
[SSL] Netscape, The SSL Protocol, Version 3, (Text version
3.02), November 1996.
8. AUTHOR'S ADDRESS
Stephen Zilles
Adobe Systems Incorporated
345 Park Avenue
MailStop W14
San Jose, CA 95110-2704
Phone: +1 408 536-4766
Fax: +1 408 537-4042
EMail: szilles@adobe.com
9. Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
AI ELI5
On this page
§1The IPP Document Suite
RFC 2568 is one of a set of documents that together describe the Internet Printing Protocol (IPP), an application level protocol for distributed printing using Internet tools and technologies. This one gives the high-level view, a roadmap to the rest of the suite and the rationale for the IETF working group's major decisions.
The suite is: Design Goals (RFC 2567), this rationale document, Model and Semantics (RFC 2566), Encoding and Transport (RFC 2565), an Implementer's Guide, and a mapping between LPD and IPP (RFC 2569). Operator and administrator requirements are out of scope for IPP version 1.0.
Think of a big instruction booklet split into chapters. This chapter is the one that says which chapter to read next and why the booklet was written this way.
§1Architecture and the Printer
IPP defines interactions between a client and a server. A client can ask about a printer's capabilities, submit print jobs, and ask about or cancel jobs. The server is the Printer, an abstraction of a generic document output device and/or a print service provider. It could be a real device such as a computer printer or fax output device, or a service in front of such devices. The design is heavily influenced by the printing model of the Document Printing Application (DPA) standard, and IPP/1.0 focuses only on end user functionality.
The architecture has three layers of definition: an abstract Model of the data that controls printing, an encoding that flattens and sequences that hierarchical data, and a protocol that carries the encoded requests and responses. A typical exchange is a create-job request: the client assembles Model data such as the job name, the media and pages per sheet, encodes it, and sends it. The Printer decodes it and either accepts or rejects the job, then answers in the same way.
The model document also defines a Directory Schema, a standard set of Printer attributes (a subset of the Model attributes) that can be associated with a Printer's URI, so a client can query a directory service for a suitable Printer. For the Printer itself, the RFC assumes a minimal implementation: an output device with a specialized real time operating system and limited processing, memory and storage, connected with at least TCP/IP and likely SNMP support, and likely acting as an HTML/HTTP server.
You tell the printer what you want in a form, the printer says yes or no, and there is a phone book where you can look up printers. The printer might be a small machine with not much brainpower.
- ModelAbstract Printer and Job objects, attributes and operations
- EncodingFlattens and sequences the Model data into a simple binary form
- TransportHTTP 1.1 POST and its response
§3Why a Separate Abstract Model
The Model is defined independently of any encoding. Products can keep the Model data in an internal data structure and use a parser or formatter to convert to and from the encoded form, so the application does not depend on the encoding. That independence would let a different encoding or transport be adopted later if the chosen ones proved limiting, and lets a server accept jobs through, for example, a direct client-less GUI.
An abstract Model also lets the data line up with the model used in the Printer, Job and Host Resources MIBs, so the data is interpreted consistently whether obtained through IPP or through SNMP.
One aspect gets extra explanation: a Job can be identified either by a Job URI or by the Printer URI plus a Job ID, a 32 bit positive integer. A Job URI allows flexibility, for example moving a job from a busy printer to a lighter one without changing its identifier. But many existing systems can only use a 32-bit integer, unique only within the Printer that received the create request. So the Printer generates both for every new Job, which lets all clients work regardless of local constraints.
The rules about what a print job is are written separately from how the message travels, like a recipe that works whether you send it by letter or phone. Each job gets two names so both old and new programs can find it.
§4Why a Simple Binary Encoding
To make embedded printers simpler to build, the protocol uses a very simple binary encoding. It is a sequence of attributes. Each attribute has a name prefixed by a name length, and a value. Names are strings limited to a subset of ASCII. Values are scalars or sequences of scalars, and each scalar has a length and a value tag giving its type, split into a major class such as integer or string and a minor class such as a dateTime string. The tags allow new value types to be introduced later.
A complete request or response carries a version number, an operation (request) or a status and optional status message (response), parameters and attributes holding the encoded Model data, and optionally, for a request, print data after the Model data.
The message is a simple list of labelled boxes: each box says its name, how long it is, and what kind of thing is inside. That is easy for even a small printer to read.
§4Why HTTP 1.1 POST
The encoded Model data travels in an HTTP 1.1 POST and its response, with no changes to HTTP 1.1 proposed or required. The RFC says the most important reason is that HTTP is already widely deployed, so many problems of working across local nets, intranets and the Internet have been solved. It adds that most of the reasons could be met by other mechanisms and makes no claim that the list uniquely determines the choice.
- Persistent connections make a multi-message protocol efficient, for example separate Create-Job and Send-Document messages.
- Chunking lets large print files be sent without knowing the length in advance.
- Accept headers carry the client's protocol and localization wishes, and HTTP redirects can tell a client a job has moved.
- Network printers typically run an HTTP server anyway to serve HTML help and status.
- Most of HTTP 1.1's complexity is in proxies, not in clients and servers.
- URL handling, the extension model (headers, media types, error codes) and prototyping tools such as CGI scripts come for free.
POST was chosen because its use for sending data is established. A new method would have identified the use better but been harder to deploy, so a new default port gives the identification with minimal impact on installed infrastructure.
Instead of inventing a new way to send mail, the designers used the web's delivery system, which already works almost everywhere and which most printers already speak.
§6Security Rationale
The RFC notes that security is an area of active work and that complete solutions to a wide range of concerns were not yet available. The design therefore sticks to security features that are implemented or currently implementable and that solve real problems with distributed printing: authorization to use a Printer, and secure interaction with a Printer.
The chosen mechanisms are HTTP 1.1 digest authentication and SSL3 secure communication. The RFC itself notes that SSL3 is not on the IETF standards track. The IESG note expects a standards-track version to add strong authentication and privacy features, and encourages experimentation with Transport Layer Security (RFC 2246) as a security layer for IPP.
To stop strangers from printing on your printer or reading your pages, the designers used locks that already existed for the web instead of making new ones.