RFC 3510
Internet Printing Protocol/1.1: IPP URL Scheme
Network Working Group π Request for Comments: 3510 Authors: R. Herriot and I. McDonald, High North Inc. π§βπ» Category: Standards Track π Date: April 2003 π Updates: RFC 2910 π¦
Internet Printing Protocol/1.1: IPP URL Scheme π¨οΈβ¨
Status of this Memo π
okay so this doc is a standards track spec for the whole Internet community π, and it's literally asking for discussion and suggestions for improvements π₯Ί. For the current standardization state and status of this protocol, check the "Internet Official Protocol Standards" (STD 1), that's the source of truth bestie π. Distribution of this memo is unlimited, so share it with everyone π.
Copyright Notice π
Copyright (C) The Internet Society (2003). All Rights Reserved. π§Ύ
Abstract π¦
so this memo defines the "ipp" URL (Uniform Resource Locator) scheme π. It updates IPP/1.1: Encoding and Transport (RFC 2910), by expanding and clarifying Section 5, "IPP URL Scheme", of RFC 2910 β¨. An "ipp" URL is used to specify the network location of a print service that supports the IPP Protocol (RFC 2910), or of a network resource (for example, a print job) managed by such a print service π¨οΈπ .
Table of Contents π§
1. Introduction ............................................... 2
2. Terminology ................................................ 3
2.1. Conformance Terminology .............................. 3
2.2. Model Terminology .................................... 3
3. IPP Model for Printers and Jobs ............................ 3
4. IPP URL Scheme ............................................. 4
4.1. IPP URL Scheme Applicability ......................... 4
4.2. IPP URL Scheme Associated Port ....................... 4
4.3. IPP URL Scheme Associated MIME Type .................. 5
4.4. IPP URL Scheme Character Encoding .................... 5
4.5. IPP URL Scheme Syntax ................................ 5
4.6. IPP URL Examples ..................................... 6
4.6.1. IPP Printer URL Examples ..................... 6
4.6.2. IPP Job URL Examples ......................... 6
4.7. IPP URL Comparisons .................................. 7
5. Conformance Requirements ................................... 8
5.1. IPP Client Conformance Requirements .................. 8
5.2. IPP Printer Conformance Requirements ................. 8
6. IANA Considerations ........................................ 9
7. Internationalization Considerations ........................ 9
8. Security Considerations .................................... 9
9. Intellectual Property Rights ............................... 10
10. Normative References ....................................... 11
11. Informative References ..................................... 11
12. Acknowledgments ............................................ 12
Appendix A - Registration of "ipp" URL Scheme .................. 13
Authors' Addresses ............................................. 15
Full Copyright Statement ....................................... 16
1. Introduction πΈ
this memo conforms to all of the requirements in Registration Procedures for URL Scheme Names [RFC2717] π. It also follows all of the recommendations in Guidelines for new URL Schemes [RFC2718] π«Ά.
if you want overview info about IPP, peep section 1, "Introduction", of [RFC2911] and section 1, "Introduction", of [RFC3196] π. For the full rundown of the IPP document set, see section 10, "Description of the Base IPP Documents", of [RFC3196] π.
this memo updates IPP/1.1: Encoding and Transport (RFC 2910), by expanding and clarifying Section 5, "IPP URL Scheme", of RFC 2910, but it does not define any new parameters or other new extensions to the syntax of IPP URLs π ββοΈ.
the IPP URL scheme defined here is based on the ABNF for the HTTP URL scheme defined in HTTP [RFC2616], which is derived from the URI Generic Syntax [RFC2396] and further updated for IPv6 by [RFC2732] π§ . An IPP URL gets transformed into an HTTP URL according to the rules in section 5 of IPP Protocol [RFC2910] π.
this document defines IPP URL scheme applicability, the associated port (631), the associated MIME type ("application/ipp"), character encoding, and syntax π.
the layout goes like this:
- Section 2 defines the terminology used throughout the document.
- Section 3 supplies references to the IPP Printer and IPP Job object model defined in IPP Model [RFC2911].
- Section 4 specifies the IPP URL scheme.
- Section 5 specifies the conformance requirements for IPP Clients and IPP Printers that claim conformance to this document.
- Sections 6, 7, and 8 specify IANA, internationalization, and security considerations.
- Sections 9, 10, 11, 12, and 13 specify normative references, informative references, acknowledgements, authors' addresses, and the full IETF copyright statement.
- Section 14 (Appendix A) is a completed registration template for the IPP URL Scheme (see section 6.0 of [RFC2717]).
2. Terminology π§
this specification uses the terminology defined in this section, so read it up π.
2.1. Conformance Terminology π
okay this is the important bit π¨. The uppercase terms "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT" "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] π₯. These terms are used to specify conformance requirements for all implementations (both print clients and print services) of this specification π .
2.2. Model Terminology π
see section 12.2, "Model Terminology", in IPP Model [RFC2911] β¨.
3. IPP Model for Printers and Jobs π¨οΈ
see section 2, "IPP Objects", section 2.1, "Printer Object", and section 2.2, "Job Object", in [RFC2911] for the full IPP object model and terminology π§.
in this document, "IPP Client" means the software (on some hardware platform) that submits, monitors, and/or manages print jobs via the IPP Protocol [RFC2910] to a print spooler, print gateway, or physical printing device π€.
in this document, "IPP Printer object" means the software (on some hardware platform) that receives print jobs and/or printer/job operations via the IPP Protocol [RFC2910] from an "IPP Client" π₯.
in this document, "IPP Printer" is a synonym for "IPP Printer object" π―ββοΈ.
in this document, "IPP Job object" means the set of attributes and documents for one print job instantiated on an "IPP Printer" ποΈ.
in this document, "IPP Job" is a synonym for "IPP Job object" π.
in this document, "IPP URL" means a URL with the "ipp" scheme π.
Note: In this document, "IPP URL" is a synonym for "ipp-URL" (in section 4, "IPP URL Scheme", of this document) and "ipp-URL" (in section 5, "IPP URL Scheme", of [RFC2910]) π.
4. IPP URL Scheme π¦
4.1. IPP URL Scheme Applicability π·
the "ipp" URL scheme MUST only be used to specify absolute URLs (relative IPP URLs are not allowed) for IPP print services and their associated network resources π«. The "ipp" URL scheme MUST only be used to specify the use of the abstract protocol defined in IPP Model [RFC2911] over an HTTP [RFC2616] transport, as defined in IPP Protocol [RFC2910] π. Any other transport binding for the abstract protocol defined in IPP Model [RFC2911] would require a different URL scheme π.
the "ipp" URL scheme lets an IPP client pick an appropriate IPP print service (for example, from a directory) π. The IPP client can set up an HTTP connection to the specified IPP print service π. Over that HTTP connection, the IPP client can send IPP protocol requests (for example, a "Print-Job" request) and receive IPP protocol responses π¨β¨.
4.2. IPP URL Scheme Associated Port π
All IPP URLs which do NOT explicitly specify a port MUST be resolved to IANA-assigned well-known port 631, as registered in [IANA-PORTREG] π.
See: IANA Port Numbers Registry [IANA-PORTREG]. See: IPP Protocol [RFC2910].
4.3. IPP URL Scheme Associated MIME Type π
All IPP URLs MUST be used to specify network print services which support the "application/ipp" MIME media type as registered in [IANA-MIMEREG] for IPP protocol requests and responses π.
See: IANA MIME Media Types Registry [IANA-MIMEREG]. See: IPP Protocol [RFC2910].
4.4. IPP URL Scheme Character Encoding π€
IPP URLs MUST use [RFC2396] encoding, same as their equivalent HTTP URLs π§©. Characters other than those in the "reserved" and "unsafe" sets [RFC2396] are equivalent to their "%" HEX HEX encoding π.
4.5. IPP URL Scheme Syntax π§¬
the abstract protocol defined in IPP Model [RFC2911] puts a limit of 1023 octets (NOT characters) on the length of a URI (see section 4.1.5, "uri", in [RFC2911]) π.
Note: IPP Printers ought to be cautious about depending on URI lengths above 255 bytes, because some older client implementations might not properly support these lengths π¬.
IPP URLs MUST be represented in absolute form π―. Absolute URLs MUST always begin with a scheme name followed by a colon π . For the definitive info on URL syntax and semantics, see "Uniform Resource Identifiers (URI): Generic Syntax and Semantics" [RFC2396] π. This specification adopts the definitions of "host", "port", "abs_path", and "query" from [RFC2396], as updated for IPv6 by [RFC2732] π.
the IPP URL scheme syntax in ABNF is as follows π§Ύ:
ipp-URL = "ipp:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
if the port is empty or not given, port 631 is assumed π. The semantics are that the identified resource (see section 5.1.2 of [RFC2616]) is located at the IPP print service listening for HTTP connections on that port of that host, and the Request-URI for the identified resource is 'abs_path' β¨.
If the 'abs_path' is not present in the URL, it MUST be given as "/" when used as a Request-URI for a resource (see section 5.1.2 of [RFC2616]) π«Ά.
4.6. IPP URL Examples π
Note: Literal IPv4 or IPv6 addresses SHOULD NOT be used in IPP URLs π ββοΈπ.
4.6.1. IPP Printer URL Examples β¨
Okay so here are some well-formed IPP URLs for IPP Printers π¨οΈπ. You'd use these as protocol elements in the printer-uri operation attributes of 'Print-Job' request messages:
ipp://example.com
ipp://example.com/printer
ipp://example.com/printer/tiger
ipp://example.com/printer/fox
ipp://example.com/printer/tiger/bob
ipp://example.com/printer/tiger/ira
Every single one of these is a legit IPP Printer URL π
, and each one points to a logically different IPP Printer, even if a few of them live on the same host π . The bob or ira last path components could be two totally separate physical printer devices π¨οΈ. tiger might be a grouping of IPP Printers, like a load-balancing spooler βοΈ. Or bob and ira could be two separate humans sharing one physical printer that has two job queues π§. Either way, bob and ira behave as different and independent IPP Printers, and that's iconic π.
Here are well-formed IPP URLs for IPP Printers with (optional) ports and paths π:
ipp://example.com
ipp://example.com/~smith/printer
ipp://example.com:631/~smith/printer
The first and second IPP URLs above MUST be resolved to port 631, which is the IANA assigned well-known port for IPP π₯. The second and third IPP URLs above are equivalent (see section 4.7 below) π¦.
4.6.2. IPP Job URL Examples π§Ύ
Here are well-formed IPP URLs for IPP Jobs π. You'd use these as protocol elements in the job-uri attributes of 'Print-Job' response messages:
ipp://example.com/printer/123
ipp://example.com/printer/tiger/job123
IPP Job URLs are only valid and meaningful until the Job completes, plus possibly an optional stretch of persistence after completion that the implementation decides on (see IPP Model [RFC2911]) β³.
Now the messy part π. Section 4.3.1 'job-uri' of IPP Model [RFC2911] says:
"the precise format of a Job URI is implementation dependent."
So the relationship between the value of the "printer-uri" operation attribute in a 'Print-Job' request and the value of the "job-uri" attribute in the matching 'Print-Job' response is implementation dependent too π€·ββοΈ. Then section 4.3.3 'job-printer-uri' of IPP Model [RFC2911] says the 'job-printer-uri' attribute of a Job object:
"permits a client to identify the Printer object that created this Job object when only the Job object's URI is available to the client."
Ngl, that one is false π. The transform from an IPP Job URL to the corresponding IPP Printer URL is unspecified in either IPP Model [RFC2911] or IPP Protocol [RFC2910], so the claim can't actually be made.
IPP Printers that conform to this specification SHOULD only generate IPP Job URLs (for example, in the "job-uri" attribute in a 'Print-Job' response) by appending exactly one path component to the corresponding IPP Printer URL (for interoperability) π§©.
4.7. IPP URL Comparisons π
When you compare two IPP URLs to figure out whether they match, an IPP Client MUST use the same rules that are defined for HTTP URI comparisons in [RFC2616], with the one exception below π :
- A port that is empty or not given MUST be treated as equivalent to the well-known port for that IPP URL (port 631);
See: Section 3.2.3, "URI Comparison", in [RFC2616].
5. Conformance Requirements β
5.1. IPP Client Conformance Requirements π»
IPP Clients that conform to this specification:
a) MUST only send IPP protocol connections to the port specified in each given IPP URL (if present), or otherwise to IANA assigned well-known port 631 π;
b) MUST only send IPP URLs used as protocol elements in outgoing IPP protocol request messages (for example, in the "printer-uri" operation attribute in a 'Print-Job' request) that conform to the ABNF specified in section 4.5, "IPP URL Scheme Syntax, of this document; π
c) MUST only convert IPP URLs to their corresponding HTTP URL forms according to the rules in section 5, "IPP URL Scheme", in [RFC2910] π.
5.2. IPP Printer Conformance Requirements π¨οΈπ
IPP Printers that conform to this specification:
a) MUST listen for incoming IPP protocol connections on IANA-assigned well-known port 631, unless explicitly configured by system administrators or site policies π§;
b) SHOULD NOT listen for incoming IPP protocol connections on any other port, unless explicitly configured by system administrators or site policies π ββοΈ;
c) SHOULD only accept IPP URLs used as protocol elements in incoming IPP protocol request messages (for example, in the "printer-uri" operation attribute in a 'Print-Job' request) that conform to the ABNF specified in section 4.5, "IPP URL Scheme Syntax", of this document π₯;
d) SHOULD only send IPP URLs used as protocol elements in outgoing IPP protocol response messages (for example, in the "job-uri" attribute in a 'Print-Job' response) that conform to the ABNF specified in section 4.5, "IPP URL Scheme Syntax", of this document π€;
e) SHOULD only generate IPP Job URLs (for example, in the "job-uri" attribute in a 'Print-Job' response) by appending exactly one path component to the corresponding IPP Printer URL (for interoperability) π§©;
f) SHOULD NOT use literal IPv6 or IPv4 addresses in configured or locally generated IPP URLs π«.
6. IANA Considerations ποΈ
This IPP URL Scheme specification doesn't add any extra IANA considerations beyond the ones in [RFC2910] and [RFC2911] π.
See: Section 6, "IANA Considerations" in [RFC2910] See: Section 6, "IANA Considerations" in [RFC2911].
7. Internationalization Considerations π
This IPP URL Scheme specification doesn't add any extra internationalization considerations beyond the ones in [RFC2910] and [RFC2911] πΊοΈ.
See: Section 7, "Internationalization Considerations", in [RFC2910]. See: Section 7, "Internationalization Considerations", in [RFC2911].
8. Security Considerations π¨
Bestie, read this part carefully π. This IPP URL Scheme specification doesn't add any extra security considerations beyond the ones in [RFC2910] and [RFC2911], except the ones below.
a) An IPP URL might be faked to point to a rogue IPP print service πΏ, which would collect confidential document contents from IPP clients ππ. Server authentication mechanisms and security mechanisms specified in the IPP Protocol [RFC2910] are sufficient to address this threat π‘οΈ.
b) An IPP URL might be used to access an IPP print service by an unauthorized IPP client π·. Client authentication mechanisms and security mechanisms specified in the IPP Protocol [RFC2910] are sufficient to address this threat π.
c) An IPP URL might be used to access an IPP print service at a print protocol application layer gateway (for example, an IPP to LPD gateway [RFC2569]), causing a silent compromise of IPP security mechanisms π±. There is no practical defense against this threat by a client system. System administrators should avoid such compromising configurations π.
d) An IPP URL does not have parameters to specify the required client authentication mechanism (for example, 'certificate' as defined in section 4.4.2, "uri-authentication-supported", of IPP Model [RFC2911]) or the required security mechanism (for example, 'tls' as defined in section 4.4.3, "uri-security-supported", of IPP Model [RFC2911]). Service discovery or directory protocols might be used to discover the required client authentication and security mechanisms associated with given IPP URLs π.
Historical Note: During the development of this document, consideration was given to adding standard IPP URL parameters for the client authentication and security mechanisms. However, based on a strong IETF IPP Working Group consensus, no parameters were added to the "ipp" URL scheme as originally defined in IPP Protocol [RFC2910] in September 2000. The reason was backwards compatibility with the many currently shipping implementations of IPP/1.1 π°οΈ.
See: Section 8, "Security Considerations", in [RFC2910]. See: Section 8, "Security Considerations", in [RFC2911].
9. Intellectual Property Rights βοΈ
The IETF takes no position on the validity or scope of any intellectual property or other rights that might be claimed to apply to the implementation or use of the technology in this document, or on whether any license under those rights might or might not be available. It also doesn't claim to have tried to identify any such rights. Info on the IETF's procedures for rights in standards-track and standards-related documentation can be found in BCP-11 π. Copies of claims of rights made available for publication, any assurances of licenses to be made available, or the result of any attempt to get a general license or permission for implementors or users to use such proprietary rights, can be obtained from the IETF Secretariat π¬.
The IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that might cover technology required to practice this standard πββοΈ. Please send that information to the IETF Executive Director π.
10. Normative References π
[RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter,
"Uniform Resource Identifiers (URI): Generic Syntax",
RFC 2396, August 1998.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2732] Hinden, R., Carpenter, B. and L. Masinter, "Format for
Literal IPv6 Addresses in URL's", RFC 2732, December
1999.
[RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R. and J.
Wenn, "IPP/1.1 Encoding and Transport [IPP Protocol]",
RFC 2910, September 2000.
[RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S. and
P. Powell, "IPP/1.1 Model and Semantics [IPP Model]",
RFC 2911, September 2000.
[US-ASCII] Coded Character Set -- 7-bit American Standard Code
for Information Interchange, ANSI X3.4-1986.
11. Informative References β¨
okay so these are the "extra reading" refs ππ they're not required to implement the thing, but they're where the good stuff lives, bestie π«Ά
[IANA-MIMEREG] IANA MIME Media Types Registry.
ftp://ftp.iana.org/in-notes/iana/assignments/media-
types/...
[IANA-PORTREG] IANA Port Numbers Registry. ftp://ftp.iana.org/in-
notes/iana/assignments/port-numbers
[RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin,
"Mapping between LPD and IPP Protocols", RFC 2569,
April 1999.
[RFC2717] Petke, R. and I. King, "Registration Procedures for
URL Scheme Names", RFC 2717, November 1999.
[RFC2718] Masinter, L., Alvestrand, H., Zigmond, D. and R.
Petke, "Guidelines for new URL Schemes", RFC 2718,
November 1999.
[RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C. and
H. Holst, "Internet Printing Protocol/1.1:
Implementor's Guide", RFC 3196, November 2001.
12. Acknowledgments πΈ
this whole doc is a product of the Internet Printing Protocol Working Group of the IETF π«Ά
big thank you to Pat Fleming (IBM), Tom Hastings (Xerox), Harry Lewis (IBM), Hugo Parra (Novell), Don Wright (Lexmark), and all the members of the IETF IPP WG π
and Section 5, "IPP URL Scheme", in IPP Protocol [RFC2910] was the main starting point for this IPP URL Scheme spec, so [RFC2910] gets a big β¨ too
Appendix A - Registration of "ipp" URL Scheme π¦
Note: this registration obsoletes section 5, "IPP URL Scheme", of IPP Protocol [RFC2911]. so the old version is officially retired π
URL Scheme Name: ipp
URL Scheme Syntax:
ipp-URL = "ipp:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Character Encoding Considerations:
okay this part is important π IPP URLs MUST use [RFC2396] encoding, same as their equivalent HTTP URLs. Characters other than those in the "reserved" and "unsafe" sets [RFC2396] are equivalent to their ""%" HEX HEX" encoding.
Intended Usage:
the intended usage of the "ipp" URL scheme is COMMON π
an "ipp" URL points at the network location of a print service that supports the IPP Protocol [RFC2910], or at a network resource (like a print job) that such a print service manages. an IPP client can choose to open an HTTP connection to that print service so it can send IPP protocol requests, like print job submission requests π¨οΈβ¨
Applications or Protocols which use this URL scheme:
see Section 5, "IPP URL Scheme", in IPP Protocol [RFC2910] π
Interoperability Considerations:
see Section 9, "Interoperability with IPP/1.0 Implementations", in IPP Protocol [RFC2910] π§
Security Considerations:
see Section 8, "Security Considerations", in IPP Protocol [RFC2910] π
Relevant Publications:
[RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R. and J. Wenn,
"IPP/1.1 Encoding and Transport [IPP Protocol]", RFC 2910,
September 2000.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
L., Leach, P. and T. Berners-Lee, "Hypertext Transfer
Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC3510] Herriot, R. and I. McDonald, "IPP/1.1: IPP URL Scheme", RFC
3510, April 2003.
Person & email address to contact for further information:
Robert Herriot
Consultant
706 Colorado Ave
Palo Alto, CA 94303
Phone: +1 650-327-4466
EMail: bob@herriot.com
Ira McDonald
High North Inc
221 Ridge Ave
Grand Marais, MI 49839
Phone: +1 906-494-2434
EMail: imcdonald@sharplabs.com
Authors' Addresses π
the two people who wrote this, and how to reach them π₯°
Robert Herriot
Consultant
706 Colorado Ave
Palo Alto, CA 94303
Phone: +1 650-327-4466
EMail: bob@herriot.com
Ira McDonald
High North Inc
221 Ridge Ave
Grand Marais, MI 49839
Phone: +1 906-494-2434
EMail: imcdonald@sharplabs.com
if you've got usage questions or comments on this IPP URL Scheme, send them straight to the editors at the addresses above (and to the IPP mailing list too, if you're subscribed, see below) π¬
IPP Web Page: http://www.pwg.org/ipp/
IPP Mailing List: ipp@pwg.org
to join the IPP mailing list, do this π
- send an email to majordomo@pwg.org
- leave the subject line blank
- put this in the message body:
subscribe ipp
implementers of this spec are super encouraged to join the IPP Mailing List and take part in any chats about clarification issues and comments π«Ά the list rejects mail from non-subscribers to keep spam out, so you have to subscribe before you can send a question or comment there π ββοΈ
Full Copyright Statement βοΈ
the legal stuff, kept word-for-word so nothing gets lost in translation π
Copyright (C) The Internet Society (2003). 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.
Acknowledgement π
funding for the RFC Editor function is currently provided by the Internet Society π
π¦ where this page comes from
- ietf: rfc3510 2003-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms