Difference between revisions of "RFC3510"
Line 7: | Line 7: | ||
IPP URL Scheme | IPP URL Scheme | ||
− | Status of this Memo | + | '''Status of this Memo''' |
This document specifies an Internet standards track protocol for the | This document specifies an Internet standards track protocol for the | ||
Internet community, and requests discussion and suggestions for | Internet community, and requests discussion and suggestions for | ||
improvements. Please refer to the current edition of the "Internet | improvements. Please refer to the current edition of the "Internet | ||
− | Official Protocol Standards" (STD 1) for the standardization state | + | Official Protocol Standards" ([[STD1|STD 1]]) for the standardization state |
and status of this protocol. Distribution of this memo is unlimited. | and status of this protocol. Distribution of this memo is unlimited. | ||
− | Copyright Notice | + | '''Copyright Notice''' |
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | ||
− | Abstract | + | '''Abstract''' |
This memo defines the "ipp" URL (Uniform Resource Locator) scheme. | This memo defines the "ipp" URL (Uniform Resource Locator) scheme. | ||
− | This memo updates IPP/1.1: Encoding and Transport (RFC 2910), by | + | This memo updates IPP/1.1: Encoding and Transport ([[RFC2910|RFC 2910]]), by |
− | expanding and clarifying Section 5, "IPP URL Scheme", of RFC 2910. | + | expanding and clarifying Section 5, "IPP URL Scheme", of [[RFC2910|RFC 2910]]. |
An "ipp" URL is used to specify the network location of a print | 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 | + | service that supports the IPP Protocol ([[RFC2910|RFC 2910]]), or of a network |
resource (for example, a print job) managed by such a print service. | resource (for example, a print job) managed by such a print service. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Introduction == | == Introduction == | ||
This memo conforms to all of the requirements in Registration | This memo conforms to all of the requirements in Registration | ||
− | Procedures for URL Scheme Names [RFC2717]. This memo also follows | + | Procedures for URL Scheme Names [[RFC2717]]. This memo also follows |
all of the recommendations in Guidelines for new URL Schemes | all of the recommendations in Guidelines for new URL Schemes | ||
− | [RFC2718]. | + | [[RFC2718]]. |
− | See section 1, "Introduction", of [RFC2911] and section 1, | + | See section 1, "Introduction", of [[RFC2911]] and section 1, |
− | "Introduction", of [RFC3196] for overview information about IPP. See | + | "Introduction", of [[RFC3196]] for overview information about IPP. See |
− | section 10, "Description of the Base IPP Documents", of [RFC3196] for | + | section 10, "Description of the Base IPP Documents", of [[RFC3196]] for |
a full description of the IPP document set. | a full description of the IPP document set. | ||
− | This memo updates IPP/1.1: Encoding and Transport (RFC 2910), by | + | This memo updates IPP/1.1: Encoding and Transport ([[RFC2910|RFC 2910]]), by |
− | expanding and clarifying Section 5, "IPP URL Scheme", of RFC 2910, | + | expanding and clarifying Section 5, "IPP URL Scheme", of [[RFC2910|RFC 2910]], |
but does not define any new parameters or other new extensions to the | but does not define any new parameters or other new extensions to the | ||
syntax of IPP URLs. | syntax of IPP URLs. | ||
The IPP URL scheme defined in this document is based on the ABNF for | The IPP URL scheme defined in this document is based on the ABNF for | ||
− | the HTTP URL scheme defined in HTTP [RFC2616], which in turn is | + | the HTTP URL scheme defined in HTTP [[RFC2616]], which in turn is |
− | derived from the URI Generic Syntax [RFC2396] and further updated for | + | derived from the URI Generic Syntax [[RFC2396]] and further updated for |
− | IPv6 by [RFC2732]. An IPP URL is transformed into an HTTP URL | + | IPv6 by [[RFC2732]]. An IPP URL is transformed into an HTTP URL |
according to the rules specified in section 5 of IPP Protocol | according to the rules specified in section 5 of IPP Protocol | ||
− | [RFC2910]. | + | [[RFC2910]]. |
This document defines IPP URL scheme applicability, associated port | This document defines IPP URL scheme applicability, associated port | ||
Line 93: | Line 61: | ||
- Section 3 supplies references to the IPP Printer and IPP Job | - Section 3 supplies references to the IPP Printer and IPP Job | ||
− | object model defined in IPP Model [RFC2911]. | + | object model defined in IPP Model [[RFC2911]]. |
- Section 4 specifies the IPP URL scheme. | - Section 4 specifies the IPP URL scheme. | ||
Line 108: | Line 76: | ||
- Section 14 (Appendix A) is a completed registration template for | - Section 14 (Appendix A) is a completed registration template for | ||
− | the IPP URL Scheme (see section 6.0 of [RFC2717]). | + | the IPP URL Scheme (see section 6.0 of [[RFC2717]]). |
== Terminology == | == Terminology == | ||
Line 120: | Line 88: | ||
"SHALL NOT" "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and | "SHALL NOT" "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and | ||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | ||
− | [RFC2119]. These terms are used to specify conformance | + | [[RFC2119]]. These terms are used to specify conformance |
requirements for all implementations (both print clients and print | requirements for all implementations (both print clients and print | ||
services) of this specification. | services) of this specification. | ||
Line 126: | Line 94: | ||
=== Model Terminology === | === Model Terminology === | ||
− | See section 12.2, "Model Terminology", in IPP Model [RFC2911]. | + | See section 12.2, "Model Terminology", in IPP Model [[RFC2911]]. |
== IPP Model for Printers and Jobs == | == IPP Model for Printers and Jobs == | ||
See section 2, "IPP Objects", section 2.1, "Printer Object", and | See section 2, "IPP Objects", section 2.1, "Printer Object", and | ||
− | section 2.2, "Job Object", in [RFC2911] for a full description of | + | section 2.2, "Job Object", in [[RFC2911]] for a full description of |
the IPP object model and terminology. | the IPP object model and terminology. | ||
In this document, "IPP Client" means the software (on some | In this document, "IPP Client" means the software (on some | ||
hardware platform) that submits, monitors, and/or manages print | hardware platform) that submits, monitors, and/or manages print | ||
− | jobs via the IPP Protocol [RFC2910] to a print spooler, print | + | jobs via the IPP Protocol [[RFC2910]] to a print spooler, print |
gateway, or physical printing device. | gateway, or physical printing device. | ||
In this document, "IPP Printer object" means the software (on some | In this document, "IPP Printer object" means the software (on some | ||
hardware platform) that receives print jobs and/or printer/job | hardware platform) that receives print jobs and/or printer/job | ||
− | operations via the IPP Protocol [RFC2910] from an "IPP Client". | + | operations via the IPP Protocol [[RFC2910]] from an "IPP Client". |
In this document, "IPP Printer" is a synonym for "IPP Printer | In this document, "IPP Printer" is a synonym for "IPP Printer | ||
Line 155: | Line 123: | ||
Note: In this document, "IPP URL" is a synonym for "ipp-URL" (in | 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 4, "IPP URL Scheme", of this document) and "ipp-URL" (in | ||
− | section 5, "IPP URL Scheme", of [RFC2910]). | + | section 5, "IPP URL Scheme", of [[RFC2910]]). |
== IPP URL Scheme == | == IPP URL Scheme == | ||
Line 165: | Line 133: | ||
their associated network resources. The "ipp" URL scheme MUST | their associated network resources. The "ipp" URL scheme MUST | ||
only be used to specify the use of the abstract protocol defined | only be used to specify the use of the abstract protocol defined | ||
− | in IPP Model [RFC2911] over an HTTP [RFC2616] transport, as | + | in IPP Model [[RFC2911]] over an HTTP [[RFC2616]] transport, as |
− | defined in IPP Protocol [RFC2910]. Any other transport binding | + | defined in IPP Protocol [[RFC2910]]. Any other transport binding |
− | for the abstract protocol defined in IPP Model [RFC2911] would | + | for the abstract protocol defined in IPP Model [[RFC2911]] would |
require a different URL scheme. | require a different URL scheme. | ||
Line 184: | Line 152: | ||
See: IANA Port Numbers Registry [IANA-PORTREG]. | See: IANA Port Numbers Registry [IANA-PORTREG]. | ||
− | See: IPP Protocol [RFC2910]. | + | See: IPP Protocol [[RFC2910]]. |
=== IPP URL Scheme Associated MIME Type === | === IPP URL Scheme Associated MIME Type === | ||
Line 193: | Line 161: | ||
See: IANA MIME Media Types Registry [IANA-MIMEREG]. | See: IANA MIME Media Types Registry [IANA-MIMEREG]. | ||
− | See: IPP Protocol [RFC2910]. | + | See: IPP Protocol [[RFC2910]]. |
=== IPP URL Scheme Character Encoding === | === IPP URL Scheme Character Encoding === | ||
− | IPP URLs MUST use [RFC2396] encoding, as do their equivalent HTTP | + | IPP URLs MUST use [[RFC2396]] encoding, as do their equivalent HTTP |
URLs. Characters other than those in the "reserved" and "unsafe" | URLs. Characters other than those in the "reserved" and "unsafe" | ||
− | sets [RFC2396] are equivalent to their ""%" HEX HEX" encoding. | + | sets [[RFC2396]] are equivalent to their ""%" HEX HEX" encoding. |
=== IPP URL Scheme Syntax === | === IPP URL Scheme Syntax === | ||
− | The abstract protocol defined in IPP Model [RFC2911] places a | + | The abstract protocol defined in IPP Model [[RFC2911]] places a |
limit of 1023 octets (NOT characters) on the length of a URI (see | limit of 1023 octets (NOT characters) on the length of a URI (see | ||
− | section 4.1.5, "uri", in [RFC2911]). | + | section 4.1.5, "uri", in [[RFC2911]]). |
Note: IPP Printers ought to be cautious about depending on URI | Note: IPP Printers ought to be cautious about depending on URI | ||
Line 214: | Line 182: | ||
always begin with a scheme name followed by a colon. For definitive | always begin with a scheme name followed by a colon. For definitive | ||
information on URL syntax and semantics, see "Uniform Resource | information on URL syntax and semantics, see "Uniform Resource | ||
− | Identifiers (URI): Generic Syntax and Semantics" [RFC2396]. This | + | Identifiers (URI): Generic Syntax and Semantics" [[RFC2396]]. This |
specification adopts the definitions of "host", "port", "abs_path", | specification adopts the definitions of "host", "port", "abs_path", | ||
− | and "query" from [RFC2396], as updated for IPv6 by [RFC2732]. | + | and "query" from [[RFC2396]], as updated for IPv6 by [[RFC2732]]. |
The IPP URL scheme syntax in ABNF is as follows: | The IPP URL scheme syntax in ABNF is as follows: | ||
Line 224: | Line 192: | ||
If the port is empty or not given, port 631 is assumed. The | 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 | semantics are that the identified resource (see section 5.1.2 of | ||
− | [RFC2616]) is located at the IPP print service listening for HTTP | + | [[RFC2616]]) is located at the IPP print service listening for HTTP |
connections on that port of that host, and the Request-URI for the | connections on that port of that host, and the Request-URI for the | ||
identified resource is 'abs_path'. | identified resource is 'abs_path'. | ||
Line 230: | Line 198: | ||
If the 'abs_path' is not present in the URL, it MUST be given as "/" | 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 | when used as a Request-URI for a resource (see section 5.1.2 of | ||
− | [RFC2616]). | + | [[RFC2616]]). |
=== IPP URL Examples === | === IPP URL Examples === | ||
Line 282: | Line 250: | ||
IPP Job URLs are valid and meaningful only until Job completion and | IPP Job URLs are valid and meaningful only until Job completion and | ||
possibly an implementation defined optional period of persistence | possibly an implementation defined optional period of persistence | ||
− | after Job completion (see IPP Model [RFC2911]). | + | after Job completion (see IPP Model [[RFC2911]]). |
− | Ambiguously, section 4.3.1 'job-uri' of IPP Model [RFC2911] states | + | Ambiguously, section 4.3.1 'job-uri' of IPP Model [[RFC2911]] states |
that: | that: | ||
Line 293: | Line 261: | ||
the "job-uri" attribute returned in the corresponding 'Print-Job' | the "job-uri" attribute returned in the corresponding 'Print-Job' | ||
response is implementation dependent. Also, section 4.3.3 'job- | response is implementation dependent. Also, section 4.3.3 'job- | ||
− | printer-uri' of IPP Model [RFC2911] states that the 'job-printer-uri' | + | printer-uri' of IPP Model [[RFC2911]] states that the 'job-printer-uri' |
attribute of a Job object: | attribute of a Job object: | ||
Line 302: | Line 270: | ||
However, the above statement is false, because the transform from an | However, the above statement is false, because the transform from an | ||
IPP Job URL to the corresponding IPP Printer URL is unspecified in | IPP Job URL to the corresponding IPP Printer URL is unspecified in | ||
− | either IPP Model [RFC2911] or IPP Protocol [RFC2910]. | + | either IPP Model [[RFC2911]] or IPP Protocol [[RFC2910]]. |
IPP Printers that conform to this specification SHOULD only generate | IPP Printers that conform to this specification SHOULD only generate | ||
Line 313: | Line 281: | ||
When comparing two IPP URLs to decide if they match or not, an IPP | When comparing two IPP URLs to decide if they match or not, an IPP | ||
Client MUST use the same rules as those defined for HTTP URI | Client MUST use the same rules as those defined for HTTP URI | ||
− | comparisons in [RFC2616], with the sole following exception: | + | comparisons in [[RFC2616]], with the sole following exception: |
- A port that is empty or not given MUST be treated as equivalent to | - A port that is empty or not given MUST be treated as equivalent to | ||
the well-known port for that IPP URL (port 631); | the well-known port for that IPP URL (port 631); | ||
− | See: Section 3.2.3, "URI Comparison", in [RFC2616]. | + | See: Section 3.2.3, "URI Comparison", in [[RFC2616]]. |
== Conformance Requirements == | == Conformance Requirements == | ||
Line 338: | Line 306: | ||
c) MUST only convert IPP URLs to their corresponding HTTP URL forms | c) MUST only convert IPP URLs to their corresponding HTTP URL forms | ||
according to the rules in section 5, "IPP URL Scheme", in | according to the rules in section 5, "IPP URL Scheme", in | ||
− | [RFC2910]. | + | [[RFC2910]]. |
=== IPP Printer Conformance Requirements === | === IPP Printer Conformance Requirements === | ||
Line 375: | Line 343: | ||
This IPP URL Scheme specification does not introduce any additional | This IPP URL Scheme specification does not introduce any additional | ||
− | IANA considerations, beyond those described in [RFC2910] and | + | IANA considerations, beyond those described in [[RFC2910]] and |
− | [RFC2911]. | + | [[RFC2911]]. |
− | See: Section 6, "IANA Considerations" in [RFC2910] | + | See: Section 6, "IANA Considerations" in [[RFC2910]] |
− | See: Section 6, "IANA Considerations" in [RFC2911]. | + | See: Section 6, "IANA Considerations" in [[RFC2911]]. |
== Internationalization Considerations == | == Internationalization Considerations == | ||
Line 385: | Line 353: | ||
This IPP URL Scheme specification does not introduce any additional | This IPP URL Scheme specification does not introduce any additional | ||
internationalization considerations, beyond those described in | internationalization considerations, beyond those described in | ||
− | [RFC2910] and [RFC2911]. | + | [[RFC2910]] and [[RFC2911]]. |
− | See: Section 7, "Internationalization Considerations", in [RFC2910]. | + | See: Section 7, "Internationalization Considerations", in [[RFC2910]]. |
− | See: Section 7, "Internationalization Considerations", in [RFC2911]. | + | See: Section 7, "Internationalization Considerations", in [[RFC2911]]. |
== Security Considerations == | == Security Considerations == | ||
This IPP URL Scheme specification does not introduce any additional | This IPP URL Scheme specification does not introduce any additional | ||
− | security considerations, beyond those described in [RFC2910] and | + | security considerations, beyond those described in [[RFC2910]] and |
− | [RFC2911], except the following: | + | [[RFC2911]], except the following: |
a) An IPP URL might be faked to point to a rogue IPP print service, | a) An IPP URL might be faked to point to a rogue IPP print service, | ||
thus collecting confidential document contents from IPP clients. | thus collecting confidential document contents from IPP clients. | ||
Server authentication mechanisms and security mechanisms specified | Server authentication mechanisms and security mechanisms specified | ||
− | in the IPP Protocol [RFC2910] are sufficient to address this | + | in the IPP Protocol [[RFC2910]] are sufficient to address this |
threat. | threat. | ||
b) An IPP URL might be used to access an IPP print service by an | b) An IPP URL might be used to access an IPP print service by an | ||
unauthorized IPP client. Client authentication mechanisms and | unauthorized IPP client. Client authentication mechanisms and | ||
− | security mechanisms specified in the IPP Protocol [RFC2910] are | + | security mechanisms specified in the IPP Protocol [[RFC2910]] are |
sufficient to address this threat. | sufficient to address this threat. | ||
c) An IPP URL might be used to access an IPP print service at a print | 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 | protocol application layer gateway (for example, an IPP to LPD | ||
− | gateway [RFC2569]) causing silent compromise of IPP security | + | gateway [[RFC2569]]) causing silent compromise of IPP security |
mechanisms. There is no practical defense against this threat by | mechanisms. There is no practical defense against this threat by | ||
a client system. System administrators should avoid such | a client system. System administrators should avoid such | ||
Line 418: | Line 386: | ||
section 4.4.2, "uri-authentication-supported", of IPP Model | section 4.4.2, "uri-authentication-supported", of IPP Model | ||
− | [RFC2911]) and required security mechanism (for example, 'tls' as | + | [[RFC2911]]) and required security mechanism (for example, 'tls' as |
defined in section 4.4.3, "uri-security-supported", of IPP Model | defined in section 4.4.3, "uri-security-supported", of IPP Model | ||
− | [RFC2911]). Service discovery or directory protocols might be | + | [[RFC2911]]). Service discovery or directory protocols might be |
used to discover the required client authentication and security | used to discover the required client authentication and security | ||
mechanisms associated with given IPP URLs. | mechanisms associated with given IPP URLs. | ||
Line 429: | Line 397: | ||
However, based on a strong IETF IPP Working Group consensus, no | However, based on a strong IETF IPP Working Group consensus, no | ||
parameters were added to the "ipp" URL scheme as originally defined | parameters were added to the "ipp" URL scheme as originally defined | ||
− | in IPP Protocol [RFC2910] in September 2000, for reasons of backwards | + | in IPP Protocol [[RFC2910]] in September 2000, for reasons of backwards |
compatibility with the many currently shipping implementations of | compatibility with the many currently shipping implementations of | ||
IPP/1.1. | IPP/1.1. | ||
− | See: Section 8, "Security Considerations", in [RFC2910]. | + | See: Section 8, "Security Considerations", in [[RFC2910]]. |
− | See: Section 8, "Security Considerations", in [RFC2911]. | + | See: Section 8, "Security Considerations", in [[RFC2911]]. |
== Intellectual Property Rights == | == Intellectual Property Rights == | ||
Line 460: | Line 428: | ||
10. Normative References | 10. Normative References | ||
− | [RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | + | [[RFC2234]] Crocker, D. and P. Overell, "Augmented BNF for Syntax |
− | Specifications: ABNF", RFC 2234, November 1997. | + | Specifications: ABNF", [[RFC2234|RFC 2234]], November 1997. |
− | [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, | + | [[RFC2396]] Berners-Lee, T., Fielding, R. and L. Masinter, |
"Uniform Resource Identifiers (URI): Generic Syntax", | "Uniform Resource Identifiers (URI): Generic Syntax", | ||
− | RFC 2396, August 1998. | + | [[RFC2396|RFC 2396]], August 1998. |
− | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | + | [[RFC2616]] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., |
Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | ||
− | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | + | Transfer Protocol -- HTTP/1.1", [[RFC2616|RFC 2616]], June 1999. |
− | [RFC2732] Hinden, R., Carpenter, B. and L. Masinter, "Format for | + | [[RFC2732]] Hinden, R., Carpenter, B. and L. Masinter, "Format for |
− | Literal IPv6 Addresses in URL's", RFC 2732, December | + | Literal IPv6 Addresses in URL's", [[RFC2732|RFC 2732]], December |
1999. | 1999. | ||
− | [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R. and J. | + | [[RFC2910]] Herriot, R., Butler, S., Moore, P., Turner, R. and J. |
Wenn, "IPP/1.1 Encoding and Transport [IPP Protocol]", | Wenn, "IPP/1.1 Encoding and Transport [IPP Protocol]", | ||
− | RFC 2910, September 2000. | + | [[RFC2910|RFC 2910]], September 2000. |
− | [RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S. and | + | [[RFC2911]] Hastings, T., Herriot, R., deBry, R., Isaacson, S. and |
P. Powell, "IPP/1.1 Model and Semantics [IPP Model]", | P. Powell, "IPP/1.1 Model and Semantics [IPP Model]", | ||
− | RFC 2911, September 2000. | + | [[RFC2911|RFC 2911]], September 2000. |
[US-ASCII] Coded Character Set -- 7-bit American Standard Code | [US-ASCII] Coded Character Set -- 7-bit American Standard Code | ||
Line 495: | Line 463: | ||
notes/iana/assignments/port-numbers | notes/iana/assignments/port-numbers | ||
− | [RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin, | + | [[RFC2569]] Herriot, R., Hastings, T., Jacobs, N. and J. Martin, |
− | "Mapping between LPD and IPP Protocols", RFC 2569, | + | "Mapping between LPD and IPP Protocols", [[RFC2569|RFC 2569]], |
April 1999. | April 1999. | ||
− | [RFC2717] Petke, R. and I. King, "Registration Procedures for | + | [[RFC2717]] Petke, R. and I. King, "Registration Procedures for |
− | URL Scheme Names", RFC 2717, November 1999. | + | URL Scheme Names", [[RFC2717|RFC 2717]], November 1999. |
− | [RFC2718] Masinter, L., Alvestrand, H., Zigmond, D. and R. | + | [[RFC2718]] Masinter, L., Alvestrand, H., Zigmond, D. and R. |
− | Petke, "Guidelines for new URL Schemes", RFC 2718, | + | Petke, "Guidelines for new URL Schemes", [[RFC2718|RFC 2718]], |
November 1999. | November 1999. | ||
− | [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C. and | + | [[RFC3196]] Hastings, T., Manros, C., Zehler, P., Kugler, C. and |
H. Holst, "Internet Printing Protocol/1.1: | H. Holst, "Internet Printing Protocol/1.1: | ||
− | Implementor's Guide", RFC 3196, November 2001. | + | Implementor's Guide", [[RFC3196|RFC 3196]], November 2001. |
12. Acknowledgments | 12. Acknowledgments | ||
Line 519: | Line 487: | ||
IETF IPP WG. | IETF IPP WG. | ||
− | Section 5, "IPP URL Scheme", in IPP Protocol [RFC2910] was the | + | Section 5, "IPP URL Scheme", in IPP Protocol [[RFC2910]] was the |
primary input to this IPP URL Scheme specification. | primary input to this IPP URL Scheme specification. | ||
Line 525: | Line 493: | ||
Note: The following registration obsoletes section 5, "IPP URL | Note: The following registration obsoletes section 5, "IPP URL | ||
− | Scheme", of IPP Protocol [RFC2911]. | + | Scheme", of IPP Protocol [[RFC2911]]. |
URL Scheme Name: ipp | URL Scheme Name: ipp | ||
Line 535: | Line 503: | ||
Character Encoding Considerations: | Character Encoding Considerations: | ||
− | IPP URLs MUST use [RFC2396] encoding, as do their equivalent HTTP | + | IPP URLs MUST use [[RFC2396]] encoding, as do their equivalent HTTP |
URLs. Characters other than those in the "reserved" and "unsafe" | URLs. Characters other than those in the "reserved" and "unsafe" | ||
− | sets [RFC2396] are equivalent to their ""%" HEX HEX" encoding. | + | sets [[RFC2396]] are equivalent to their ""%" HEX HEX" encoding. |
Intended Usage: | Intended Usage: | ||
Line 544: | Line 512: | ||
An "ipp" URL is used to specify the network location of a print | An "ipp" URL is used to specify the network location of a print | ||
− | service that supports the IPP Protocol [RFC2910], or of a network | + | service that supports the IPP Protocol [[RFC2910]], or of a network |
resource (for example, a print job) managed by such a print | resource (for example, a print job) managed by such a print | ||
service. An IPP client can choose to establish an HTTP connection | service. An IPP client can choose to establish an HTTP connection | ||
Line 552: | Line 520: | ||
Applications or Protocols which use this URL scheme: | Applications or Protocols which use this URL scheme: | ||
− | See: Section 5, "IPP URL Scheme", in IPP Protocol [RFC2910]. | + | See: Section 5, "IPP URL Scheme", in IPP Protocol [[RFC2910]]. |
Interoperability Considerations: | Interoperability Considerations: | ||
See: Section 9, "Interoperability with IPP/1.0 Implementations", | See: Section 9, "Interoperability with IPP/1.0 Implementations", | ||
− | in IPP Protocol [RFC2910]. | + | in IPP Protocol [[RFC2910]]. |
Security Considerations: | Security Considerations: | ||
See: Section 8, "Security Considerations", in IPP Protocol | See: Section 8, "Security Considerations", in IPP Protocol | ||
− | [RFC2910]. | + | [[RFC2910]]. |
Relevant Publications: | Relevant Publications: | ||
− | [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R. and J. Wenn, | + | [[RFC2910]] Herriot, R., Butler, S., Moore, P., Turner, R. and J. Wenn, |
− | "IPP/1.1 Encoding and Transport [IPP Protocol]", RFC 2910, | + | "IPP/1.1 Encoding and Transport [IPP Protocol]", [[RFC2910|RFC 2910]], |
September 2000. | September 2000. | ||
− | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, | + | [[RFC2616]] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, |
L., Leach, P. and T. Berners-Lee, "Hypertext Transfer | L., Leach, P. and T. Berners-Lee, "Hypertext Transfer | ||
− | Protocol -- HTTP/1.1", RFC 2616, June 1999. | + | Protocol -- HTTP/1.1", [[RFC2616|RFC 2616]], June 1999. |
− | [RFC3510] Herriot, R. and I. McDonald, "IPP/1.1: IPP URL Scheme", RFC | + | [[RFC3510]] Herriot, R. and I. McDonald, "IPP/1.1: IPP URL Scheme", RFC |
3510, April 2003. | 3510, April 2003. | ||
Line 667: | Line 635: | ||
Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | ||
Internet Society. | Internet Society. | ||
+ | |||
+ | [[Category:Standards Track]] |
Latest revision as of 03:31, 4 October 2020
Network Working Group R. Herriot Request for Comments: 3510 I. McDonald Updates: 2910 High North Inc. Category: Standards Track April 2003
Internet Printing Protocol/1.1: IPP URL Scheme
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract
This memo defines the "ipp" URL (Uniform Resource Locator) scheme. This memo 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.
Contents
Introduction
This memo conforms to all of the requirements in Registration Procedures for URL Scheme Names RFC2717. This memo also follows all of the recommendations in Guidelines for new URL Schemes RFC2718.
See section 1, "Introduction", of RFC2911 and section 1, "Introduction", of RFC3196 for overview information about IPP. See section 10, "Description of the Base IPP Documents", of RFC3196 for a full description of the IPP document set.
This memo updates IPP/1.1: Encoding and Transport (RFC 2910), by expanding and clarifying Section 5, "IPP URL Scheme", of RFC 2910, but does not define any new parameters or other new extensions to the syntax of IPP URLs.
The IPP URL scheme defined in this document is based on the ABNF for the HTTP URL scheme defined in HTTP RFC2616, which in turn is derived from the URI Generic Syntax RFC2396 and further updated for IPv6 by RFC2732. An IPP URL is transformed into an HTTP URL according to the rules specified in section 5 of IPP Protocol RFC2910.
This document defines IPP URL scheme applicability, associated port (631), associated MIME type ("application/ipp"), character encoding, and syntax.
This document is laid out as follows:
- 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 full IETF copyright statement.
- Section 14 (Appendix A) is a completed registration template for
the IPP URL Scheme (see section 6.0 of RFC2717).
Terminology
This specification document uses the terminology defined in this section.
Conformance Terminology
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.
Model Terminology
See section 12.2, "Model Terminology", in IPP Model RFC2911.
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 a full description of the 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).
IPP URL Scheme
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 allows an IPP client to choose an appropriate IPP print service (for example, from a directory). The IPP client can establish an HTTP connection to the specified IPP print service. The IPP client can send IPP protocol requests (for example, a "Print-Job" request) and receive IPP protocol responses over that HTTP connection.
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.
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.
IPP URL Scheme Character Encoding
IPP URLs MUST use RFC2396 encoding, as do their equivalent HTTP URLs. Characters other than those in the "reserved" and "unsafe" sets RFC2396 are equivalent to their ""%" HEX HEX" encoding.
IPP URL Scheme Syntax
The abstract protocol defined in IPP Model RFC2911 places 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 definitive information 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).
IPP URL Examples
Note: Literal IPv4 or IPv6 addresses SHOULD NOT be used in IPP URLs.
IPP Printer URL Examples
The following are examples of well-formed IPP URLs for IPP Printers (for example, to be used as protocol elements in '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
Each of the above URLs are well-formed URLs for IPP Printers and each would reference a logically different IPP Printer, even though some of those IPP Printers might share the same host system. The 'bob' or 'ira' last path components might represent two different physical printer devices, while 'tiger' might represent some grouping of IPP Printers (for example, a load-balancing spooler). Or the 'bob' and 'ira' last path components might represent separate human recipients on the same physical printer device (for example, a physical printer supporting two job queues). In either case, both 'bob' and 'ira' would behave as different and independent IPP Printers.
The following are examples of 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 (IANA assigned well-known port for IPP). The second and third IPP URLs above are equivalent (see section 4.7 below).
IPP Job URL Examples
The following are examples of well-formed IPP URLs for IPP Jobs (for example, to be used as protocol elements in 'job-uri' attributes of 'Print-Job' response messages):
ipp://example.com/printer/123 ipp://example.com/printer/tiger/job123
IPP Job URLs are valid and meaningful only until Job completion and possibly an implementation defined optional period of persistence after Job completion (see IPP Model RFC2911).
Ambiguously, section 4.3.1 'job-uri' of IPP Model RFC2911 states that:
"the precise format of a Job URI is implementation dependent."
Thus, the relationship between the value of the "printer-uri" operation attribute used in a 'Print-Job' request and the value of the "job-uri" attribute returned in the corresponding 'Print-Job' response is implementation dependent. Also, section 4.3.3 'job- printer-uri' of IPP Model RFC2911 states that 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."
However, the above statement is false, because the transform from an IPP Job URL to the corresponding IPP Printer URL is unspecified in either IPP Model RFC2911 or IPP Protocol RFC2910.
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).
IPP URL Comparisons
When comparing two IPP URLs to decide if they match or not, an IPP Client MUST use the same rules as those defined for HTTP URI comparisons in RFC2616, with the sole following exception:
- 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.
Conformance Requirements
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.
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.
IANA Considerations
This IPP URL Scheme specification does not introduce any additional IANA considerations, beyond those described in RFC2910 and RFC2911.
See: Section 6, "IANA Considerations" in RFC2910 See: Section 6, "IANA Considerations" in RFC2911.
Internationalization Considerations
This IPP URL Scheme specification does not introduce any additional internationalization considerations, beyond those described in RFC2910 and RFC2911.
See: Section 7, "Internationalization Considerations", in RFC2910. See: Section 7, "Internationalization Considerations", in RFC2911.
Security Considerations
This IPP URL Scheme specification does not introduce any additional security considerations, beyond those described in RFC2910 and RFC2911, except the following:
a) An IPP URL might be faked to point to a rogue IPP print service,
thus collecting 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 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) and 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 the addition of 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, for reasons of 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.
Intellectual Property Rights
The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the 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
[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 document is a product of the Internet Printing Protocol Working Group of the Internet Engineering Task Force (IETF).
Thanks 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.
Section 5, "IPP URL Scheme", in IPP Protocol RFC2910 was the primary input to this IPP URL Scheme specification.
Appendix A - Registration of "ipp" URL Scheme
Note: The following registration obsoletes section 5, "IPP URL Scheme", of IPP Protocol RFC2911.
URL Scheme Name: ipp
URL Scheme Syntax:
ipp-URL = "ipp:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Character Encoding Considerations:
IPP URLs MUST use RFC2396 encoding, as do 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 is used to specify the network location of a print service that supports the IPP Protocol RFC2910, or of a network resource (for example, a print job) managed by such a print service. An IPP client can choose to establish an HTTP connection to the specified print service for transmission of IPP protocol requests (for example, IPP 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: [email protected]
Ira McDonald High North Inc 221 Ridge Ave Grand Marais, MI 49839
Phone: +1 906-494-2434 EMail: [email protected]
Authors' Addresses
Robert Herriot Consultant 706 Colorado Ave Palo Alto, CA 94303
Phone: +1 650-327-4466 EMail: [email protected]
Ira McDonald High North Inc 221 Ridge Ave Grand Marais, MI 49839
Phone: +1 906-494-2434 EMail: [email protected]
Usage questions and comments on this IPP URL Scheme should be sent directly to the editors at their above addresses (and to the IPP mailing list, if you are a subscriber - see below).
IPP Web Page: http://www.pwg.org/ipp/ IPP Mailing List: [email protected]
To subscribe to the IPP mailing list, send the following email:
1) send it to [email protected]
2) leave the subject line blank
3) put the following two lines in the message body: subscribe ipp
Implementers of this specification are encouraged to join the IPP Mailing List in order to participate in any discussions of clarification issues and comments. In order to reduce spam the mailing list rejects mail from non-subscribers, so you must subscribe to the mailing list in order to send a question or comment to the IPP mailing list.
Full Copyright Statement
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.