| < draft-ietf-ipp-protocol-06.txt | draft-ietf-ipp-protocol-07.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT Robert Herriot (editor) | INTERNET-DRAFT Robert Herriot (editor) | |||
| Sun Microsystems | Sun Microsystems | |||
| <draft-ietf-ipp-protocol-06.txt> Sylvan Butler | <draft-ietf-ipp-protocol-07.txt> Sylvan Butler | |||
| Hewlett-Packard | Hewlett-Packard | |||
| Paul Moore | Paul Moore | |||
| Microsoft | Microsoft | |||
| Randy Turner | Randy Turner | |||
| Sharp Labs | Sharp Labs | |||
| June 30, 1998 | November 16, 1998 | |||
| Internet Printing Protocol/1.0: Encoding and Transport | Internet Printing Protocol/1.0: Encoding and Transport | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, and | documents of the Internet Engineering Task Force (IETF), its areas, and | |||
| its working groups. Note that other groups may also distribute working | its working groups. Note that other groups may also distribute working | |||
| documents as Internet-Drafts. | documents as Internet-Drafts. | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C)The Internet Society (1998). All Rights Reserved. | Copyright (C)The Internet Society (1998). All Rights Reserved. | |||
| Abstract | Abstract | |||
| This document is one of a set of documents, which together describe all | 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 | aspects of a new Internet Printing Protocol (IPP). IPP is an application | |||
| level protocol that can be used for distributed printing using Internet | level protocol that can be used for distributed printing using Internet | |||
| tools and technologies. The protocol is heavily influenced by the | tools and technologies. This document defines the rules for encoding IPP | |||
| printing model introduced in the Document Printing Application (DPA) | operations and IPP attributes into a new Internet mime media type called | |||
| [ISO10175] standard. Although DPA specifies both end user and | "application/ipp". This document also defines the rules for | |||
| administrative features, IPP version 1.0 (IPP/1.0) focuses only on end | transporting over HTTP a message body whose Content-Type is | |||
| user functionality. | "application/ipp". | |||
| Moore and Turner Expires May 16, 1999 | ||||
| The full set of IPP documents includes: | The full set of IPP documents includes: | |||
| Design Goals for an Internet Printing Protocol [ipp-req] | Design Goals for an Internet Printing Protocol [ipp-req] | |||
| (informational) | ||||
| Rationale for the Structure and Model and Protocol for the Internet | Rationale for the Structure and Model and Protocol for the Internet | |||
| Printing Protocol [ipp-rat] (informational) | Printing Protocol [ipp-rat] | |||
| Internet Printing Protocol/1.0: Model and Semantics [ipp mod] | Internet Printing Protocol/1.0: Model and Semantics [ipp-mod] | |||
| Internet Printing Protocol/1.0: Encoding and Transport (this | Internet Printing Protocol/1.0: Encoding and Transport (this | |||
| document) | document) | |||
| Mapping between LPD and IPP Protocols [ipp lpd] (informational) | Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig] | |||
| Mapping between LPD and IPP Protocols [ipp-lpd] | ||||
| The design goals document, "Design Goals for an Internet Printing | The document, "Design Goals for an Internet Printing Protocol", takes a | |||
| Protocol", takes a broad look at distributed printing functionality, and | broad look at distributed printing functionality, and it enumerates | |||
| it enumerates real-life scenarios that help to clarify the features that | real-life scenarios that help to clarify the features that need to be | |||
| need to be included in a printing protocol for the Internet. It | included in a printing protocol for the Internet. It identifies | |||
| identifies requirements for three types of users: end users, operators, | requirements for three types of users: end users, operators, and | |||
| and administrators. The design goals document calls out a subset of end | administrators. It calls out a subset of end user requirements that are | |||
| user requirements that are satisfied in IPP/1.0. Operator and | satisfied in IPP/1.0. Operator and administrator requirements are out of | |||
| administrator requirements are out of scope for version 1.0. The | scope for version 1.0. | |||
| rationale document, "Rationale for the Structure and Model and Protocol | ||||
| for the Internet Printing Protocol", 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 document, "Internet Printing | ||||
| Protocol/1.0: Model and Semantics", describes a simplified model with | ||||
| abstract objects, their attributes, and their operations. The model | ||||
| introduces a Printer and a Job. The Job supports multiple documents per | ||||
| Job. The model document also addresses how security, | ||||
| internationalization, and directory issues are addressed. The protocol | ||||
| specification, "Internet Printing Protocol/1.0: Encoding and Transport", | ||||
| is a formal mapping of the abstract operations and attributes defined in | ||||
| the model document onto HTTP/1.1. The protocol specification defines the | ||||
| encoding rules for a new Internet media type called "application/ipp". | ||||
| The "Mapping between LPD and IPP Protocols" gives some advice to | ||||
| implementors of gateways between IPP and LPD (Line Printer Daemon) | ||||
| implementations. | ||||
| This document is the "Internet Printing Protocol/1.0: Encoding and | ||||
| Transport" document. | ||||
| Notice | The document, "Rationale for the Structure and Model and Protocol for | |||
| the Internet Printing Protocol", 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 IETF invites any interested party to bring to its attention any | The document, "Internet Printing Protocol/1.0: Model and Semantics", | |||
| copyrights, patents or patent applications, or other proprietary rights | describes a simplified model with abstract objects, their attributes, | |||
| which may cover technology that may be required to practice this | and their operations that are independent of encoding and transport. It | |||
| standard. Please address the information to the IETF Executive | introduces a Printer and a Job object. The Job object optionally | |||
| Director. | supports multiple documents per Job. It also addresses security, | |||
| internationalization, and directory issues. | ||||
| This document "Internet Printing Protocol/1.0: Implementer's Guide", | ||||
| gives advice to implementers of IPP clients and IPP objects. | ||||
| The document "Mapping between LPD and IPP Protocols" gives some advice | ||||
| to implementers of gateways between IPP and LPD (Line Printer Daemon) | ||||
| implementations. | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction........................................................4 | 1. Introduction.......................................................4 | |||
| 2. Conformance Terminology.............................................4 | 2. Conformance Terminology............................................4 | |||
| 3. Encoding of the Operation Layer....................................4 | 3. Encoding of the Operation Layer...................................4 | |||
| 3.1 Picture of the Encoding .......................................5 | 3.1 Picture of the Encoding.......................................5 | |||
| 3.2 Syntax of Encoding ............................................7 | 3.2 Syntax of Encoding............................................7 | |||
| 3.3 Version-number ................................................8 | 3.3 Version-number................................................8 | |||
| 3.4 Operation-id ..................................................8 | 3.4 Operation-id..................................................8 | |||
| 3.5 Status-code ...................................................9 | 3.5 Status-code...................................................9 | |||
| 3.6 Request-id ....................................................9 | 3.6 Request-id....................................................9 | |||
| 3.7 Tags ..........................................................9 | 3.7 Tags..........................................................9 | |||
| 3.7.1 Delimiter Tags ...........................................9 | 3.7.1 Delimiter Tags.............................................9 | |||
| 3.7.2 Value Tags ..............................................10 | 3.7.2 Value Tags................................................10 | |||
| 3.8 Name-Length ..................................................12 | 3.8 Name-Length..................................................12 | |||
| 3.9 (Attribute) Name .............................................12 | 3.9 (Attribute) Name.............................................12 | |||
| 3.10 Value Length .................................................14 | 3.10 Value Length.................................................14 | |||
| 3.11 (Attribute) Value ............................................15 | 3.11 (Attribute) Value............................................15 | |||
| 3.12 Data .........................................................16 | 3.12 Data.........................................................16 | |||
| 4. Encoding of Transport Layer........................................16 | 4. Encoding of Transport Layer.......................................16 | |||
| 4.1 General Headers ..............................................18 | 5. Security Considerations...........................................17 | |||
| 4.2 Request Headers .............................................19 | 5.1 Using IPP with SSL3..........................................18 | |||
| 4.3 Response Headers .............................................20 | 6. References........................................................18 | |||
| 4.4 Entity Headers ..............................................21 | 7. Author's Address..................................................20 | |||
| 5. Security Considerations............................................22 | 8. Other Participants:...............................................20 | |||
| 6. References.........................................................22 | 9. Appendix A: Protocol Examples.....................................21 | |||
| 7. Author's Address...................................................24 | 9.1 Print-Job Request............................................21 | |||
| 8. Other Participants:................................................24 | 9.2 Print-Job Response (successful)..............................22 | |||
| 9. Appendix A: Protocol Examples......................................25 | 9.3 Print-Job Response (failure).................................23 | |||
| 9.1 Print-Job Request ............................................25 | 9.4 Print-Job Response (success with attributes ignored).........24 | |||
| 9.2 Print-Job Response (successful) ..............................26 | 9.5 Print-URI Request............................................25 | |||
| 9.3 Print-Job Response (failure) .................................27 | 9.6 Create-Job Request...........................................26 | |||
| 9.4 Print-URI Request ............................................27 | 9.7 Get-Jobs Request.............................................27 | |||
| 9.5 Create-Job Request ...........................................28 | 9.8 Get-Jobs Response............................................28 | |||
| 9.6 Get-Jobs Request .............................................29 | 10.Appendix C: Registration of MIME Media Type Information for | |||
| 9.7 Get-Jobs Response ............................................30 | "application/ipp".....................................................29 | |||
| 10.Appendix B: Registration of MIME Media Type Information for | 11.Appendix D: Full Copyright Statement..............................31 | |||
| "application/ipp".....................................................31 | ||||
| 11.Appendix C: Full Copyright Statement ..............................33 | Moore and Turner Expires May 16, 1999 | |||
| 1. Introduction | 1. Introduction | |||
| This document contains the rules for encoding IPP operations and | This document contains the rules for encoding IPP operations and | |||
| describes two layers: the transport layer and the operation layer. | describes two layers: the transport layer and the operation layer. | |||
| The transport layer consists of an HTTP/1.1 request or response. RFC | The transport layer consists of an HTTP/1.1 request or response. RFC | |||
| 2068 [rfc2068] describes HTTP/1.1. This document specifies the HTTP | 2068 [rfc2068] describes HTTP/1.1. This document specifies the HTTP | |||
| headers that an IPP implementation supports. | headers that an IPP implementation supports. | |||
| The operation layer consists of a message body in an HTTP request or | The operation layer consists of a message body in an HTTP request or | |||
| skipping to change at page 4, line 39 ¶ | skipping to change at page 4, line 41 ¶ | |||
| response. Each request or response consists of a sequence of values and | response. Each request or response consists of a sequence of values and | |||
| attribute groups. Attribute groups consist of a sequence of attributes | attribute groups. Attribute groups consist of a sequence of attributes | |||
| each of which is a name and value. Names and values are ultimately | each of which is a name and value. Names and values are ultimately | |||
| sequences of octets | sequences of octets | |||
| The encoding consists of octets as the most primitive type. There are | The encoding consists of octets as the most primitive type. There are | |||
| several types built from octets, but three important types are | several types built from octets, but three important types are | |||
| integers, character strings and octet strings, on which most other | integers, character strings and octet strings, on which most other | |||
| data types are built. Every character string in this encoding MUST be a | data types are built. Every character string in this encoding MUST be a | |||
| sequence of characters where the characters are associated with some | sequence of characters where the characters are associated with some | |||
| charset and some natural language. . A character string MUST be in | charset and some natural language. A character string MUST be in | |||
| "reading order" with the first character in the value (according to | "reading order" with the first character in the value (according to | |||
| reading order) being the first character in the encoding. A character | reading order) being the first character in the encoding. A character | |||
| string whose associated charset is US-ASCII whose associated natural | string whose associated charset is US-ASCII whose associated natural | |||
| language is US English is henceforth called a US-ASCII-STRING. A | language is US English is henceforth called a US-ASCII-STRING. A | |||
| character string whose associated charset and natural language are | character string whose associated charset and natural language are | |||
| specified in a request or response as described in the model document is | specified in a request or response as described in the model document is | |||
| henceforth called a LOCALIZED-STRING. An octet string MUST be in "IPP | henceforth called a LOCALIZED-STRING. An octet string MUST be in "IPP | |||
| model document order" with the first octet in the value (according to | model document order" with the first octet in the value (according to | |||
| the IPP model document order) being the first octet in the encoding | the IPP model document order) being the first octet in the encoding | |||
| Every integer in this encoding MUST be encoded as a signed integer using | Every integer in this encoding MUST be encoded as a signed integer using | |||
| two's-complement binary encoding with big-endian format (also known as | two's-complement binary encoding with big-endian format (also known as | |||
| "network order" and "most significant byte first"). The number of octets | "network order" and "most significant byte first"). The number of octets | |||
| for an integer MUST be 1, 2 or 4, depending on usage in the protocol. | for an integer MUST be 1, 2 or 4, depending on usage in the protocol. | |||
| Such one-octet integers, henceforth called SIGNED-BYTE, are used for the | Such one-octet integers, henceforth called SIGNED-BYTE, are used for the | |||
| version-number and tag fields. Such two-byte integers, henceforth called | version-number and tag fields. Such two-byte integers, henceforth called | |||
| SIGNED-SHORT are used for the operation-id, status-code and length | SIGNED-SHORT are used for the operation-id, status-code and length | |||
| Moore and Turner Expires May 16, 1999 | ||||
| fields. Four byte integers, henceforth called SIGNED-INTEGER, are used | fields. Four byte integers, henceforth called SIGNED-INTEGER, are used | |||
| for values fields and the sequence number. | for values fields and the sequence number. | |||
| The following two sections present the operation layer in two ways | The following two sections present the operation layer in two ways | |||
| . informally through pictures and description | @ informally through pictures and description | |||
| . formally through Augmented Backus-Naur Form (ABNF), as specified by | @ formally through Augmented Backus-Naur Form (ABNF), as specified by | |||
| RFC 2234 [rfc2234] | RFC 2234 [rfc2234] | |||
| 3.1 Picture of the Encoding | 3.1 Picture of the Encoding | |||
| The encoding for an operation request or response consists of: | The encoding for an operation request or response consists of: | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | version-number | 2 bytes - required | | version-number | 2 bytes - required | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | operation-id (request) | | | operation-id (request) | | |||
| skipping to change at page 6, line 7 ¶ | skipping to change at page 6, line 4 ¶ | |||
| unsupported-attributes-tag which SHOULD be present only if the | unsupported-attributes-tag which SHOULD be present only if the | |||
| unsupported-attribute-sequence is non-empty. A receiver of a request | unsupported-attribute-sequence is non-empty. A receiver of a request | |||
| MUST be able to process as equivalent empty attribute groups: | MUST be able to process as equivalent empty attribute groups: | |||
| a) an xxx-attributes-tag with an empty xxx-attribute-sequence, | a) an xxx-attributes-tag with an empty xxx-attribute-sequence, | |||
| b) an expected but missing xxx-attributes-tag. | b) an expected but missing xxx-attributes-tag. | |||
| The data is omitted from some operations, but the end-of-attributes-tag | The data is omitted from some operations, but the end-of-attributes-tag | |||
| is present even when the data is omitted. Note, the xxx-attributes-tags | is present even when the data is omitted. Note, the xxx-attributes-tags | |||
| and end-of-attributes-tag are called `delimiter-tags'. Note: the xxx- | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| and end-of-attributes-tag are called 'delimiter-tags'. Note: the xxx- | ||||
| attribute-sequence, shown above may consist of 0 bytes, according to the | attribute-sequence, shown above may consist of 0 bytes, according to the | |||
| rule below. | rule below. | |||
| An xxx-attributes-sequence consists of zero or more compound-attributes. | An xxx-attributes-sequence consists of zero or more compound-attributes. | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | compound-attribute | s bytes - 0 or more | | compound-attribute | s bytes - 0 or more | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| A compound-attribute consists of an attribute with a single value | A compound-attribute consists of an attribute with a single value | |||
| followed by zero or more additional values. | followed by zero or more additional values. | |||
| Note: a `compound-attribute' represents a single attribute in the model | Note: a 'compound-attribute' represents a single attribute in the model | |||
| document. The `additional value' syntax is for attributes with 2 or | document. The 'additional value' syntax is for attributes with 2 or | |||
| more values. | more values. | |||
| Each attribute consists of: | Each attribute consists of: | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | value-tag | 1 byte | | value-tag | 1 byte | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | name-length (value is u) | 2 bytes | | name-length (value is u) | 2 bytes | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | name | u bytes | | name | u bytes | |||
| skipping to change at page 6, line 52 ¶ | skipping to change at page 6, line 51 ¶ | |||
| ----------------------------------------------- | | ----------------------------------------------- | | |||
| | name-length (value is 0x0000) | 2 bytes | | | name-length (value is 0x0000) | 2 bytes | | |||
| ----------------------------------------------- |-0 or more | ----------------------------------------------- |-0 or more | |||
| | value-length (value is w) | 2 bytes | | | value-length (value is w) | 2 bytes | | |||
| ----------------------------------------------- | | ----------------------------------------------- | | |||
| | value | w bytes | | | value | w bytes | | |||
| ----------------------------------------------------------- | ----------------------------------------------------------- | |||
| Note: an additional value is like an attribute whose name-length is 0. | Note: an additional value is like an attribute whose name-length is 0. | |||
| From the standpoint of a parsing loop, the encoding consists of: | >From the standpoint of a parsing loop, the encoding consists of: | |||
| Moore and Turner Expires May 16, 1999 | ||||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | version-number | 2 bytes - required | | version-number | 2 bytes - required | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | operation-id (request) | | | operation-id (request) | | |||
| | or | 2 bytes - required | | or | 2 bytes - required | |||
| | status-code (response) | | | status-code (response) | | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | request-id | 4 bytes - required | | request-id | 4 bytes - required | |||
| ----------------------------------------------------------- | ----------------------------------------------------------- | |||
| | tag (delimiter-tag or value-tag) | 1 byte | | | tag (delimiter-tag or value-tag) | 1 byte | | |||
| ----------------------------------------------- |-0 or more | ----------------------------------------------- |-0 or more | |||
| | empty or rest of attribute | x bytes | | | empty or rest of attribute | x bytes | | |||
| ----------------------------------------------------------- | ----------------------------------------------------------- | |||
| | end-of-attributes-tag | 2 bytes - required | | end-of-attributes-tag | 2 bytes - required | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| | data | y bytes - optional | | data | y bytes - optional | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| The value of the tag determines whether the bytes following the tag are: | The value of the tag determines whether the bytes following the tag are: | |||
| . attributes | @ attributes | |||
| . data | @ data | |||
| . the remainder of a single attribute where the tag specifies the | @ the remainder of a single attribute where the tag specifies the | |||
| type of the value. | type of the value. | |||
| 3.2 Syntax of Encoding | 3.2 Syntax of Encoding | |||
| The syntax below is ABNF [rfc2234] except `strings of literals' MUST be | The syntax below is ABNF [rfc2234] except 'strings of literals' MUST be | |||
| case sensitive. For example `a' means lower case `a' and not upper case | case sensitive. For example 'a' means lower case 'a' and not upper case | |||
| `A'. In addition, SIGNED-BYTE and SIGNED-SHORT fields are represented | 'A'. In addition, SIGNED-BYTE and SIGNED-SHORT fields are represented | |||
| as `%x' values which show their range of values. | as '%x' values which show their range of values. | |||
| ipp-message = ipp-request / ipp-response | ipp-message = ipp-request / ipp-response | |||
| ipp-request = version-number operation-id request-id | ipp-request = version-number operation-id request-id | |||
| *(xxx-attributes-tag xxx-attribute-sequence) end-of- | *(xxx-attributes-tag xxx-attribute-sequence) end-of- | |||
| attributes-tag data | attributes-tag data | |||
| ipp-response = version-number status-code request-id | ipp-response = version-number status-code request-id | |||
| *(xxx-attributes-tag xxx-attribute-sequence) end-of- | *(xxx-attributes-tag xxx-attribute-sequence) end-of- | |||
| attributes-tag data | attributes-tag data | |||
| xxx-attribute-sequence = *compound-attribute | xxx-attribute-sequence = *compound-attribute | |||
| skipping to change at page 8, line 4 ¶ | skipping to change at page 8, line 4 ¶ | |||
| version-number = major-version-number minor-version-number | version-number = major-version-number minor-version-number | |||
| major-version-number = SIGNED-BYTE ; initially %d1 | major-version-number = SIGNED-BYTE ; initially %d1 | |||
| minor-version-number = SIGNED-BYTE ; initially %d0 | minor-version-number = SIGNED-BYTE ; initially %d0 | |||
| operation-id = SIGNED-SHORT ; mapping from model defined below | operation-id = SIGNED-SHORT ; mapping from model defined below | |||
| status-code = SIGNED-SHORT ; mapping from model defined below | status-code = SIGNED-SHORT ; mapping from model defined below | |||
| request-id = SIGNED-INTEGER ; whose value is > 0 | request-id = SIGNED-INTEGER ; whose value is > 0 | |||
| compound-attribute = attribute *additional-values | compound-attribute = attribute *additional-values | |||
| Moore and Turner Expires May 16, 1999 | ||||
| attribute = value-tag name-length name value-length value | attribute = value-tag name-length name value-length value | |||
| additional-values = value-tag zero-name-length value-length value | additional-values = value-tag zero-name-length value-length value | |||
| name-length = SIGNED-SHORT ; number of octets of `name' | name-length = SIGNED-SHORT ; number of octets of 'name' | |||
| name = LALPHA *( LALPHA / DIGIT / "-" / """ / "." ) | name = LALPHA *( LALPHA / DIGIT / "-" / "_" / "." ) | |||
| value-length = SIGNED-SHORT ; number of octets of `value' | value-length = SIGNED-SHORT ; number of octets of 'value' | |||
| value = OCTET-STRING | value = OCTET-STRING | |||
| data = OCTET-STRING | data = OCTET-STRING | |||
| zero-name-length = %x00.00 ; name-length of 0 | zero-name-length = %x00.00 ; name-length of 0 | |||
| operation-attributes-tag = %x01 ; tag of 1 | operation-attributes-tag = %x01 ; tag of 1 | |||
| job-attributes-tag = %x02 ; tag of 2 | job-attributes-tag = %x02 ; tag of 2 | |||
| printer-attributes-tag = %x04 ; tag of 4 | printer-attributes-tag = %x04 ; tag of 4 | |||
| unsupported- attributes-tag = %x05 ; tag of 5 | unsupported- attributes-tag = %x05 ; tag of 5 | |||
| end-of-attributes-tag = %x03 | end-of-attributes-tag = %x03 ; tag of 3 | |||
| ; tag of 3 | ||||
| value-tag = %x10-FF | value-tag = %x10-FF | |||
| SIGNED-BYTE = BYTE | SIGNED-BYTE = BYTE | |||
| SIGNED-SHORT = 2BYTE | SIGNED-SHORT = 2BYTE | |||
| SIGNED-INTEGER = 4BYTE | ||||
| DIGIT = %x30-39 ; "0" to "9" | DIGIT = %x30-39 ; "0" to "9" | |||
| LALPHA = %x61-7A ; "a" to "z" | LALPHA = %x61-7A ; "a" to "z" | |||
| BYTE = %x00-FF | BYTE = %x00-FF | |||
| OCTET-STRING = *BYTE | OCTET-STRING = *BYTE | |||
| The syntax allows an xxx-attributes-tag to be present when the xxx- | The syntax allows an xxx-attributes-tag to be present when the xxx- | |||
| attribute-sequence that follows is empty. The syntax is defined this way | attribute-sequence that follows is empty. The syntax is defined this way | |||
| to allow for the response of Get-Jobs where no attributes are returned | to allow for the response of Get-Jobs where no attributes are returned | |||
| for some job-objects. Although it is RECOMMENDED that the sender not | for some job-objects. Although it is RECOMMENDED that the sender not | |||
| send an xxx-attributes-tag if there are no attributes (except in the | send an xxx-attributes-tag if there are no attributes (except in the | |||
| skipping to change at page 8, line 49 ¶ | skipping to change at page 8, line 51 ¶ | |||
| The version-number MUST consist of a major and minor version-number, | The version-number MUST consist of a major and minor version-number, | |||
| each of which MUST be represented by a SIGNED-BYTE. The protocol | each of which MUST be represented by a SIGNED-BYTE. The protocol | |||
| described in this document MUST have a major version-number of 1 (0x01) | described in this document MUST have a major version-number of 1 (0x01) | |||
| and a minor version-number of 0 (0x00). The ABNF for these two bytes | and a minor version-number of 0 (0x00). The ABNF for these two bytes | |||
| MUST be %x01.00. | MUST be %x01.00. | |||
| 3.4 Operation-id | 3.4 Operation-id | |||
| Operation-ids are defined as enums in the model document. An operation- | Operation-ids are defined as enums in the model document. An operation- | |||
| ids enum value MUST be encoded as a SIGNED-SHORT | ids enum value MUST be encoded as a SIGNED-SHORT. | |||
| Note: the values 0x4000 to 0xFFFF are reserved for private extensions. | Note: the values 0x4000 to 0xFFFF are reserved for private extensions. | |||
| Moore and Turner Expires May 16, 1999 | ||||
| 3.5 Status-code | 3.5 Status-code | |||
| Status-codes are defined as enums in the model document. A status-code | Status-codes are defined as enums in the model document. A status-code | |||
| enum value MUST be encoded as a SIGNED-SHORT | enum value MUST be encoded as a SIGNED-SHORT. | |||
| The status-code is an operation attribute in the model document. In the | The status-code is an operation attribute in the model document. In the | |||
| protocol, the status-code is in a special position, outside of the | protocol, the status-code is in a special position, outside of the | |||
| operation attributes. | operation attributes. | |||
| If an IPP status-code is returned, then the HTTP Status-Code MUST be 200 | If an IPP status-code is returned, then the HTTP Status-Code MUST be 200 | |||
| (OK). With any other HTTP Status-Code value, the HTTP response MUST NOT | (successful-ok). With any other HTTP Status-Code value, the HTTP | |||
| contain an IPP message-body, and thus no IPP status-code is returned. | response MUST NOT contain an IPP message-body, and thus no IPP status- | |||
| code is returned. | ||||
| 3.6 Request-id | 3.6 Request-id | |||
| The request-id allows a client to match a response with a request. This | The request-id allows a client to match a response with a request. This | |||
| mechanism is unnecessary in HTTP, but may be useful when application/ipp | mechanism is unnecessary in HTTP, but may be useful when application/ipp | |||
| entity bodies are used in another context. | entity bodies are used in another context. | |||
| The request-id in a response MUST be the value of the request-id | The request-id in a response MUST be the value of the request-id | |||
| received in the corresponding request. A client can set the request-id | received in the corresponding request. A client can set the request-id | |||
| in each request to a unique value or a constant value, such as 1, | in each request to a unique value or a constant value, such as 1, | |||
| depending on what the client does with the request-id returned in the | depending on what the client does with the request-id returned in the | |||
| response. The value of the request-id MUST be greater than zero. | response. The value of the request-id MUST be greater than zero. | |||
| 3.7 Tags | 3.7 Tags | |||
| There are two kinds of tags: | There are two kinds of tags: | |||
| . delimiter tags: delimit major sections of the protocol, namely | @ delimiter tags: delimit major sections of the protocol, namely | |||
| attributes and data | attributes and data | |||
| . value tags: specify the type of each attribute value | @ value tags: specify the type of each attribute value | |||
| 3.7.1 Delimiter Tags | 3.7.1 Delimiter Tags | |||
| The following table specifies the values for the delimiter tags: | The following table specifies the values for the delimiter tags: | |||
| Tag Value (Hex) Delimiter | Tag Value (Hex) Delimiter | |||
| 0x00 reserved | 0x00 reserved | |||
| 0x01 operation-attributes-tag | 0x01 operation-attributes-tag | |||
| 0x02 job-attributes-tag | 0x02 job-attributes-tag | |||
| 0x03 end-of-attributes-tag | 0x03 end-of-attributes-tag | |||
| 0x04 printer-attributes-tag | 0x04 printer-attributes-tag | |||
| 0x05 unsupported-attributes-tag | 0x05 unsupported-attributes-tag | |||
| 0x06-0x0e reserved for future delimiters | 0x06-0x0e reserved for future delimiters | |||
| 0x0F reserved for future chunking-end-of-attributes- | 0x0F reserved for future chunking-end-of-attributes- | |||
| tag | tag | |||
| Moore and Turner Expires May 16, 1999 | ||||
| When an xxx-attributes-tag occurs in the protocol, it MUST mean that | When an xxx-attributes-tag occurs in the protocol, it MUST mean that | |||
| zero or more following attributes up to the next delimiter tag are | zero or more following attributes up to the next delimiter tag are | |||
| attributes belonging to group xxx as defined in the model document, | attributes belonging to group xxx as defined in the model document, | |||
| where xxx is operation, job, printer, unsupported. | where xxx is operation, job, printer, unsupported. | |||
| Doing substitution for xxx in the above paragraph, this means the | Doing substitution for xxx in the above paragraph, this means the | |||
| following. When an operation-attributes-tag occurs in the protocol, it | following. When an operation-attributes-tag occurs in the protocol, it | |||
| MUST mean that the zero or more following attributes up to the next | MUST mean that the zero or more following attributes up to the next | |||
| delimiter tag are operation attributes as defined in the model document. | delimiter tag are operation attributes as defined in the model document. | |||
| When an job-attributes-tag occurs in the protocol, it MUST mean that the | When an job-attributes-tag occurs in the protocol, it MUST mean that the | |||
| zero or more following attributes up to the next delimiter tag are job | zero or more following attributes up to the next delimiter tag are job | |||
| attributes as defined in the model document. When an printer-attributes- | attributes or job template attributes as defined in the model document. | |||
| tag occurs in the protocol, it MUST mean that the zero or more following | When a printer-attributes-tag occurs in the protocol, it MUST mean that | |||
| attributes up to the next delimiter tag are printer attributes as | the zero or more following attributes up to the next delimiter tag are | |||
| defined in the model document. When an unsupported- attributes-tag | printer attributes as defined in the model document. When an | |||
| occurs in the protocol, it MUST mean that the zero or more following | unsupported-attributes-tag occurs in the protocol, it MUST mean that the | |||
| attributes up to the next delimiter tag are unsupported attributes as | zero or more following attributes up to the next delimiter tag are | |||
| defined in the model document. | unsupported attributes as defined in the model document. | |||
| The operation-attributes-tag and end-of-attributes-tag MUST each occur | The operation-attributes-tag and end-of-attributes-tag MUST each occur | |||
| exactly once in an operation. The operation-attributes-tag MUST be the | exactly once in an operation. The operation-attributes-tag MUST be the | |||
| first tag delimiter, and the end-of-attributes-tag MUST be the last tag | first tag delimiter, and the end-of-attributes-tag MUST be the last tag | |||
| delimiter. If the operation has a document-content group, the document | delimiter. If the operation has a document-content group, the document | |||
| data in that group MUST follow the end-of-attributes-tag | data in that group MUST follow the end-of-attributes-tag. | |||
| Each of the other three xxx-attributes-tags defined above is OPTIONAL | Each of the other three xxx-attributes-tags defined above is OPTIONAL | |||
| in an operation and each MUST occur at most once in an operation, except | in an operation and each MUST occur at most once in an operation, except | |||
| for job-attributes-tag in a Get-Jobs response which may occur zero or | for job-attributes-tag in a Get-Jobs response which may occur zero or | |||
| more times. | more times. | |||
| The order and presence of delimiter tags for each operation request and | The order and presence of delimiter tags for each operation request and | |||
| each operation response MUST be that defined in the model document. For | each operation response MUST be that defined in the model document. For | |||
| further details, see section 3.9 "(Attribute) Name" and .section 9 | further details, see section 3.9 "(Attribute) Name" and section 9 | |||
| "Appendix A: Protocol Examples" | "Appendix A: Protocol Examples". | |||
| A Printer MUST treat the reserved delimiter tags differently from | A Printer MUST treat the reserved delimiter tags differently from | |||
| reserved value tags so that the Printer knows that there is an entire | reserved value tags so that the Printer knows that there is an entire | |||
| attribute group that it doesn't understand as opposed to a single value | attribute group that it doesn't understand as opposed to a single value | |||
| that it doesn't understand. | that it doesn't understand. | |||
| 3.7.2 Value Tags | 3.7.2 Value Tags | |||
| The remaining tables show values for the value-tag, which is the first | The remaining tables show values for the value-tag, which is the first | |||
| octet of an attribute. The value-tag specifies the type of the value of | octet of an attribute. The value-tag specifies the type of the value of | |||
| the attribute. The following table specifies the "out-of-band" values | the attribute. The following table specifies the "out-of-band" values | |||
| for the value-tag. | for the value-tag. | |||
| Tag Value (Hex) Meaning | Tag Value (Hex) Meaning | |||
| 0x10 unsupported | 0x10 unsupported | |||
| 0x11 reserved for future `default' | 0x11 reserved for future 'default' | |||
| 0x12 unknown | 0x12 unknown | |||
| Tag Value (Hex) Meaning | 0x13 no-value | |||
| 0x13 no-value | Moore and Turner Expires May 16, 1999 | |||
| 0x14-0x1F reserved for future "out-of-band" values. | Tag Value (Hex) Meaning | |||
| 0x14-0x1F reserved for future "out-of-band" values. | ||||
| The "unsupported" value MUST be used in the attribute-sequence of an | The "unsupported" value MUST be used in the attribute-sequence of an | |||
| error response for those attributes which the printer does not support. | error response for those attributes which the printer does not support. | |||
| The "default" value is reserved for future use of setting value back to | The "default" value is reserved for future use of setting value back to | |||
| their default value. The "unknown" value is used for the value of a | their default value. The "unknown" value is used for the value of a | |||
| supported attribute when its value is temporarily unknown. . The "no- | supported attribute when its value is temporarily unknown. The "no- | |||
| value" value is used for a supported attribute to which no value has | value" value is used for a supported attribute to which no value has | |||
| been assigned, e.g. "job-k-octets-supported" has no value if an | been assigned, e.g. "job-k-octets-supported" has no value if an | |||
| implementation supports this attribute, but an administrator has not | implementation supports this attribute, but an administrator has not | |||
| configured the printer to have a limit. | configured the printer to have a limit. | |||
| The following table specifies the integer values for the value-tag | The following table specifies the integer values for the value-tag: | |||
| Tag Value (Hex) Meaning | Tag Value (Hex) Meaning | |||
| 0x20 reserved | 0x20 reserved | |||
| 0x21 integer | 0x21 integer | |||
| 0x22 boolean | 0x22 boolean | |||
| 0x23 enum | 0x23 enum | |||
| 0x24-0x2F reserved for future integer types | 0x24-0x2F reserved for future integer types | |||
| NOTE: 0x20 is reserved for "generic integer" if should ever be needed. | NOTE: 0x20 is reserved for "generic integer" if it should ever be | |||
| needed. | ||||
| The following table specifies the octetString values for the value-tag | The following table specifies the octetString values for the value-tag: | |||
| Tag Value (Hex) Meaning | Tag Value (Hex) Meaning | |||
| 0x30 octetString with an unspecified format | 0x30 octetString with an unspecified format | |||
| 0x31 dateTime | 0x31 dateTime | |||
| 0x32 resolution | 0x32 resolution | |||
| 0x33 rangeOfInteger | 0x33 rangeOfInteger | |||
| 0x34 reserved for collection (in the future) | 0x34 reserved for collection (in the future) | |||
| 0x35 textWithLanguage | 0x35 textWithLanguage | |||
| 0x36 nameWithLanguage | 0x36 nameWithLanguage | |||
| 0x37-0x3F reserved for future octetString types | 0x37-0x3F reserved for future octetString types | |||
| The following table specifies the character-string values for the value- | The following table specifies the character-string values for the value- | |||
| tag | tag: | |||
| Tag Value (Hex) Meaning | Tag Value (Hex) Meaning | |||
| 0x40 reserved | 0x40 reserved | |||
| 0x41 textWithoutLanguage | 0x41 textWithoutLanguage | |||
| 0x42 nameWithoutLanguage | 0x42 nameWithoutLanguage | |||
| 0x43 reserved | 0x43 reserved | |||
| 0x44 keyword | 0x44 keyword | |||
| Tag Value (Hex) Meaning | 0x45 uri | |||
| 0x46 uriScheme | ||||
| 0x47 charset | ||||
| 0x48 naturalLanguage | ||||
| 0x45 uri | Moore and Turner Expires May 16, 1999 | |||
| 0x46 uriScheme | Tag Value (Hex) Meaning | |||
| 0x47 charset | ||||
| 0x48 naturalLanguage | ||||
| 0x49 mimeMediaType | ||||
| 0x4A-0x5F reserved for future character string types | ||||
| NOTE: 0x40 is reserved for "generic character-string" if should ever be | 0x49 mimeMediaType | |||
| needed. | 0x4A-0x5F reserved for future character string types | |||
| NOTE: 0x40 is reserved for "generic character-string" if it should ever | ||||
| be needed. | ||||
| NOTE: an attribute value always has a type, which is explicitly | NOTE: an attribute value always has a type, which is explicitly | |||
| specified by its tag; one such tag value is "nameWithoutLanguage". An | specified by its tag; one such tag value is "nameWithoutLanguage". An | |||
| attribute's name has an implicit type, which is keyword. | attribute's name has an implicit type, which is keyword. | |||
| The values 0x60-0xFF are reserved for future types. There are no values | The values 0x60-0xFF are reserved for future types. There are no values | |||
| allocated for private extensions. A new type MUST be registered via the | allocated for private extensions. A new type MUST be registered via the | |||
| type 2 process. | type 2 registration process [ipp-mod]. | |||
| The tag 0x7F is reserved for extending types beyond the 255 values | The tag 0x7F is reserved for extending types beyond the 255 values | |||
| available with a single byte. A tag value of 0x7F MUST signify that the | available with a single byte. A tag value of 0x7F MUST signify that the | |||
| first 4 bytes of the value field are interpreted as the tag value. | first 4 bytes of the value field are interpreted as the tag value. | |||
| Note, this future extension doesn't affect parsers that are unaware of | Note, this future extension doesn't affect parsers that are unaware of | |||
| this special tag. The tag is like any other unknown tag, and the value | this special tag. The tag is like any other unknown tag, and the value | |||
| length specifies the length of a value which contains a value that the | length specifies the length of a value which contains a value that the | |||
| parser treats atomically. All these 4 byte tag values are currently | parser treats atomically. All these 4 byte tag values are currently | |||
| unallocated except that the values 0x40000000-0x7FFFFFFF are reserved | unallocated except that the values 0x40000000-0x7FFFFFFF are reserved | |||
| for experimental use. | for experimental use. | |||
| skipping to change at page 12, line 52 ¶ | skipping to change at page 12, line 50 ¶ | |||
| value for the preceding attribute. Within an attribute-sequence, if two | value for the preceding attribute. Within an attribute-sequence, if two | |||
| attributes have the same name, the first occurrence MUST be ignored. The | attributes have the same name, the first occurrence MUST be ignored. The | |||
| zero-length name is the only mechanism for multi-valued attributes. | zero-length name is the only mechanism for multi-valued attributes. | |||
| 3.9 (Attribute) Name | 3.9 (Attribute) Name | |||
| Some operation elements are called parameters in the model document | Some operation elements are called parameters in the model document | |||
| [ipp-mod]. They MUST be encoded in a special position and they MUST NOT | [ipp-mod]. They MUST be encoded in a special position and they MUST NOT | |||
| appear as an operation attributes. These parameters are: | appear as an operation attributes. These parameters are: | |||
| . "version-number": The parameter named "version-number" in the IPP | @ "version-number": The parameter named "version-number" in the IPP | |||
| model document MUST become the "version-number" field in the | model document MUST become the "version-number" field in the | |||
| operation layer request or response. | operation layer request or response. | |||
| @ "operation-id": The parameter named "operation-id" in the IPP model | ||||
| . "operation-id": The parameter named "operation-id" in the IPP model | ||||
| document MUST become the "operation-id" field in the operation | document MUST become the "operation-id" field in the operation | |||
| layer request. | layer request. | |||
| . "status-code": The parameter named "status-code" in the IPP model | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| @ "status-code": The parameter named "status-code" in the IPP model | ||||
| document MUST become the "status-code" field in the operation layer | document MUST become the "status-code" field in the operation layer | |||
| response. | response. | |||
| . "request-id": The parameter named "request-id" in the IPP model | @ "request-id": The parameter named "request-id" in the IPP model | |||
| document MUST become the "request-id" field in the operation layer | document MUST become the "request-id" field in the operation layer | |||
| request or response. | request or response. | |||
| All Printer and Job objects are identified by a Uniform Resource | All Printer and Job objects are identified by a Uniform Resource | |||
| Identifier (URI) [rfc1630] so that they can be persistently and | Identifier (URI) [rfc2396] so that they can be persistently and | |||
| unambiguously referenced. The notion of a URI is a useful concept, | unambiguously referenced. The notion of a URI is a useful concept, | |||
| however, until the notion of URI is more stable (i.e., defined more | however, until the notion of URI is more stable (i.e., defined more | |||
| completely and deployed more widely), it is expected that the URIs used | completely and deployed more widely), it is expected that the URIs used | |||
| for IPP objects will actually be URLs [rfc1738] [rfc1808]. Since every | for IPP objects will actually be URLs [rfc1738] [rfc1808]. Since every | |||
| URL is a specialized form of a URI, even though the more generic term | URL is a specialized form of a URI, even though the more generic term | |||
| URI is used throughout the rest of this document, its usage is intended | URI is used throughout the rest of this document, its usage is intended | |||
| to cover the more specific notion of URL as well. | to cover the more specific notion of URL as well. | |||
| Some operation elements are encoded twice, once as the request-URI on | Some operation elements are encoded twice, once as the request-URI on | |||
| the HTTP Request-Line and a second time as a REQUIRED operation | the HTTP Request-Line and a second time as a REQUIRED operation | |||
| attribute in the application/ipp entity. These attributes are the | attribute in the application/ipp entity. These attributes are the | |||
| target URI for the operation: | target URI for the operation: | |||
| . "printer-uri": When the target is a printer and the transport is | @ "printer-uri": When the target is a printer and the transport is | |||
| HTTP or HTTPS (for TLS), the target printer-uri defined in each | HTTP or HTTPS (for SSL3 [ssl]), the target printer-uri defined in | |||
| operation in the IPP model document MUST be an operation attribute | each operation in the IPP model document MUST be an operation | |||
| called "printer-uri" and it MUST also be specified outside of the | attribute called "printer-uri" and it MUST also be specified | |||
| operation layer as the request-URI on the Request-Line at the HTTP | outside of the operation layer as the request-URI on the Request- | |||
| level. | Line at the HTTP level. | |||
| . "job-uri": When the target is a job and the transport is HTTP or | @ "job-uri": When the target is a job and the transport is HTTP or | |||
| HTTPS (for TLS), the target job-uri of each operation in the IPP | HTTPS (for SSL3), the target job-uri of each operation in the IPP | |||
| model document MUST be an operation attribute called "job-uri" and | model document MUST be an operation attribute called "job-uri" and | |||
| it MUST also be specified outside of the operation layer as the | it MUST also be specified outside of the operation layer as the | |||
| request-URI on the Request-Line at the HTTP level. | request-URI on the Request-Line at the HTTP level. | |||
| Note: Because the target URI is included twice in an operation, the | Note: The target URI is included twice in an operation referencing the | |||
| potential exists that these two values reference the same IPP object, | same IPP object, but the two URIs NEED NOT be literally identical. One | |||
| but are not literally identical. One can be a relative URI and the other | can be a relative URI and the other can be an absolute URI. HTTP/1.1 | |||
| can be an absolute URI. HTTP/1.1 allows clients to generate and send a | allows clients to generate and send a relative URI rather than an | |||
| relative URI rather than an absolute URI. A relative URI identifies a | absolute URI. A relative URI identifies a resource with the scope of | |||
| resource with the scope of the HTTP server, but does not include scheme, | the HTTP server, but does not include scheme, host or port. The | |||
| host or port. The following statements characterize how URLs should be | following statements characterize how URLs should be used in the mapping | |||
| used in the mapping of IPP onto HTTP/1.1: | of IPP onto HTTP/1.1: | |||
| 1. Although potentially redundant, a client MUST supply the target of | 1. Although potentially redundant, a client MUST supply the target of | |||
| the operation both as an Operation and as a URI at the HTTP layer. | the operation both as an operation attribute and as a URI at the | |||
| The rationale for this decision is to maintain a consistent set of | HTTP layer. The rationale for this decision is to maintain a | |||
| rules for mapping IPP to possibly many communication layers, even | consistent set of rules for mapping application/ipp to possibly | |||
| where URLs are not used as the addressing mechanism. | many communication layers, even where URLs are not used as the | |||
| addressing mechanism in the transport layer. | ||||
| 2. Even though these two URLs might not be literally identical (one | 2. Even though these two URLs might not be literally identical (one | |||
| being relative and the other being absolute), they MUST both | being relative and the other being absolute), they MUST both | |||
| reference the same IPP object. | reference the same IPP object. | |||
| 3. The URI in the HTTP layer is either relative or absolute and is | 3. The URI in the HTTP layer is either relative or absolute and is | |||
| used by the HTTP server to route the HTTP request to the correct | used by the HTTP server to route the HTTP request to the correct | |||
| Moore and Turner Expires May 16, 1999 | ||||
| resource relative to that HTTP server. The HTTP server need not be | resource relative to that HTTP server. The HTTP server need not be | |||
| aware of the URI within the operation request. | aware of the URI within the operation request. | |||
| 4. Once the HTTP server resource begins to process the HTTP request, | 4. Once the HTTP server resource begins to process the HTTP request, | |||
| it might get the reference to the appropriate IPP Printer object | it might get the reference to the appropriate IPP Printer object | |||
| from either the HTTP URI (using to the context of the HTTP server | from either the HTTP URI (using to the context of the HTTP server | |||
| for relative URLs) or from the URI within the operation request; | for relative URLs) or from the URI within the operation request; | |||
| the choice is up to the implementation. | the choice is up to the implementation. | |||
| 5. HTTP URIs can be relative or absolute, but the target URI in the | 5. HTTP URIs can be relative or absolute, but the target URI in the | |||
| operation MUST be an absolute URI | operation MUST be an absolute URI. | |||
| The model document arranges the remaining attributes into groups for | The model document arranges the remaining attributes into groups for | |||
| each operation request and response. Each such group MUST be represented | each operation request and response. Each such group MUST be represented | |||
| in the protocol by an xxx-attribute-sequence preceded by the appropriate | in the protocol by an xxx-attribute-sequence preceded by the appropriate | |||
| xxx-attributes-tag (See the table below and section 9 "Appendix A: | xxx-attributes-tag (See the table below and section 9 "Appendix A: | |||
| Protocol Examples"). In addition, the order of these xxx-attributes-tags | Protocol Examples"). In addition, the order of these xxx-attributes-tags | |||
| and xxx-attribute-sequences in the protocol MUST be the same as in the | and xxx-attribute-sequences in the protocol MUST be the same as in the | |||
| model document, but the order of attributes within each xxx-attribute- | model document, but the order of attributes within each xxx-attribute- | |||
| sequence MUST be unspecified. The table below maps the model document | sequence MUST be unspecified. The table below maps the model document | |||
| group name to xxx-attributes-sequence | group name to xxx-attributes-sequence: | |||
| Model Document Group xxx-attributes-sequence | Model Document Group xxx-attributes-sequence | |||
| Operation Attributes operations-attributes-sequence | Operation Attributes operations-attributes-sequence | |||
| Job Template Attributes job-attributes-sequence | Job Template Attributes job-attributes-sequence | |||
| Job Object Attributes job-attributes-sequence | Job Object Attributes job-attributes-sequence | |||
| Unsupported Attributes unsupported- attributes-sequence | Unsupported Attributes unsupported- attributes-sequence | |||
| Requested Attributes (Get- job-attributes-sequence | Requested Attributes (Get- job-attributes-sequence | |||
| Job-Attributes) | Job-Attributes) | |||
| Requested Attributes (Get- printer-attributes-sequence | Requested Attributes (Get- printer-attributes-sequence | |||
| skipping to change at page 14, line 48 ¶ | skipping to change at page 14, line 47 ¶ | |||
| If an operation contains attributes from more than one job object (e.g. | If an operation contains attributes from more than one job object (e.g. | |||
| Get-Jobs response), the attributes from each job object MUST be in a | Get-Jobs response), the attributes from each job object MUST be in a | |||
| separate job-attribute-sequence, such that the attributes from the ith | separate job-attribute-sequence, such that the attributes from the ith | |||
| job object are in the ith job-attribute-sequence. See Section 9 | job object are in the ith job-attribute-sequence. See Section 9 | |||
| "Appendix A: Protocol Examples" for table showing the application of the | "Appendix A: Protocol Examples" for table showing the application of the | |||
| rules above. | rules above. | |||
| 3.10 Value Length | 3.10 Value Length | |||
| Each attribute value MUST be preceded by a SIGNED-SHORT which MUST | Each attribute value MUST be preceded by a SIGNED-SHORT, which MUST | |||
| specify the number of octets in the value which follows this length, | specify the number of octets in the value which follows this length, | |||
| exclusive of the two bytes specifying the length. | exclusive of the two bytes specifying the length. | |||
| For any of the types represented by binary signed integers, the sender | For any of the types represented by binary signed integers, the sender | |||
| MUST encode the value in exactly four octets.. | MUST encode the value in exactly four octets. | |||
| For any of the types represented by character-strings, the sender MUST | For any of the types represented by character-strings, the sender MUST | |||
| encode the value with all the characters of the string and without any | encode the value with all the characters of the string and without any | |||
| padding characters. | padding characters. | |||
| Moore and Turner Expires May 16, 1999 | ||||
| If a value-tag contains an "out-of-band" value, such as "unsupported", | If a value-tag contains an "out-of-band" value, such as "unsupported", | |||
| the value-length MUST be 0 and the value empty " the value has no | the value-length MUST be 0 and the value empty . the value has no | |||
| meaning when the value-tag has an "out-of-band" value. If a client | meaning when the value-tag has an "out-of-band" value. If a client | |||
| receives a response with a nonzero value-length in this case, it MUST | receives a response with a nonzero value-length in this case, it MUST | |||
| ignore the value field. If a printer receives a request with a nonzero | ignore the value field. If a printer receives a request with a nonzero | |||
| value-length in this case, it MUST reject the request. | value-length in this case, it MUST reject the request. | |||
| 3.11 (Attribute) Value | 3.11 (Attribute) Value | |||
| The syntax types and most of the details of their representation are | The syntax types and most of the details of their representation are | |||
| defined in the IPP model document. The table below augments the | defined in the IPP model document. The table below augments the | |||
| information in the model document, and defines the syntax types from the | information in the model document, and defines the syntax types from the | |||
| model document in terms of the 5 basic types defined in section 3 | model document in terms of the 5 basic types defined in section 3 | |||
| "Encoding of the Operation Layer". The 5 types are US-ASCII-STRING, | "Encoding of the Operation Layer". The 5 types are US-ASCII-STRING, | |||
| LOCALIZED-STRING, SIGNED-INTEGER, SIGNED-SHORT, SIGNED-BYTE, and OCTET- | LOCALIZED-STRING, SIGNED-INTEGER, SIGNED-SHORT, SIGNED-BYTE, and OCTET- | |||
| STRING. | STRING. | |||
| Syntax of Attribute Encoding | Syntax of Attribute Encoding | |||
| Value | Value | |||
| textWithoutLanguage, LOCALIZED-STRING. | textWithoutLanguage, LOCALIZED-STRING. | |||
| nameWithoutLanguage | nameWithoutLanguage | |||
| textWithLanguage OCTET"STRING consisting of 4 fields: | textWithLanguage OCTET_STRING consisting of 4 fields: | |||
| a) a SIGNED-SHORT which is the number of octets in the following field | a) a SIGNED-SHORT which is the number of octets | |||
| in the following field | ||||
| b) a value of type natural-language, | b) a value of type natural-language, | |||
| c) a SIGNED-SHORT which is the number of octets | c) a SIGNED-SHORT which is the number of octets | |||
| in the following field, | in the following field, | |||
| d) a value of type textWithoutLanguage. | d) a value of type textWithoutLanguage. | |||
| The length of a textWithLanguage value MUST be 4 | The length of a textWithLanguage value MUST be 4 | |||
| + the value of field a + the value of field c. | + the value of field a + the value of field c. | |||
| nameWithLanguage OCTET"STRING consisting of 4 fields: | nameWithLanguage OCTET_STRING consisting of 4 fields: | |||
| a) a SIGNED-SHORT which is the number of octets | a) a SIGNED-SHORT which is the number of octets | |||
| in the following field | in the following field | |||
| b) a value of type natural-language, | b) a value of type natural-language, | |||
| c) a SIGNED-SHORT which is the number of octets | c) a SIGNED-SHORT which is the number of octets | |||
| in the following field | in the following field | |||
| d) a value of type nameWithoutLanguage. | d) a value of type nameWithoutLanguage. | |||
| The length of a nameWithLanguage value MUST be 4 | The length of a nameWithLanguage value MUST be 4 | |||
| + the value of field a + the value of field c. | + the value of field a + the value of field c. | |||
| charset, US-ASCII-STRING | charset, US-ASCII-STRING. | |||
| naturalLanguage, | naturalLanguage, | |||
| mimeMediaType, | mimeMediaType, | |||
| Syntax of Attribute Encoding | ||||
| Value | ||||
| keyword, uri, and | keyword, uri, and | |||
| uriScheme | uriScheme | |||
| boolean SIGNED-BYTE where 0x00 is `false' and 0x01 is | boolean SIGNED-BYTE where 0x00 is 'false' and 0x01 is | |||
| `true' | 'true'. | |||
| integer and enum a SIGNED-INTEGER | Moore and Turner Expires May 16, 1999 | |||
| dateTime OCTET-STRING consisting of eleven octets whose | Syntax of Attribute Encoding | |||
| Value | ||||
| integer and enum a SIGNED-INTEGER. | ||||
| dateTime OCTET-STRING consisting of eleven octets whose | ||||
| contents are defined by "DateAndTime" in RFC | contents are defined by "DateAndTime" in RFC | |||
| 1903 [rfc1903]. | 1903 [rfc1903]. | |||
| resolution OCTET"STRING consisting of nine octets of 2 | resolution OCTET_STRING consisting of nine octets of 2 | |||
| SIGNED-INTEGERs followed by a SIGNED-BYTE. The | SIGNED-INTEGERs followed by a SIGNED-BYTE. The | |||
| first SIGNED-INTEGER contains the value of cross | first SIGNED-INTEGER contains the value of cross | |||
| feed direction resolution . The second SIGNED- | feed direction resolution. The second SIGNED- | |||
| INTEGER contains the value of feed direction | INTEGER contains the value of feed direction | |||
| resolution. The SIGNED-BYTE contains the units | resolution. The SIGNED-BYTE contains the units | |||
| value. | value. | |||
| rangeOfInteger Eight octets consisting of 2 SIGNED-INTEGERs. | rangeOfInteger Eight octets consisting of 2 SIGNED-INTEGERs. | |||
| The first SIGNED-INTEGERs contains the lower | The first SIGNED-INTEGER contains the lower | |||
| bound and the second SIGNED-INTEGERs contains | bound and the second SIGNED-INTEGER contains the | |||
| the upper bound. | upper bound. | |||
| 1setOf X encoding according to the rules for an attribute | 1setOf X Encoding according to the rules for an attribute | |||
| with more than 1 value. Each value X is encoded | with more than 1 value. Each value X is encoded | |||
| according to the rules for encoding its type. | according to the rules for encoding its type. | |||
| octetString OCTET-STRING | octetString OCTET-STRING | |||
| The type of the value in the model document determines the encoding in | The type of the value in the model document determines the encoding in | |||
| the value and the value of the value-tag. | the value and the value of the value-tag. | |||
| 3.12 Data | 3.12 Data | |||
| The data part MUST include any data required by the operation | The data part MUST include any data required by the operation | |||
| 4. Encoding of Transport Layer | 4. Encoding of Transport Layer | |||
| HTTP/1.1 is the transport layer for this protocol. | HTTP/1.1 [rfc2068] is the transport layer for this protocol. | |||
| The operation layer has been designed with the assumption that the | The operation layer has been designed with the assumption that the | |||
| transport layer contains the following information: | transport layer contains the following information: | |||
| . the URI of the target job or printer operation | @ the URI of the target job or printer operation | |||
| . the total length of the data in the operation layer, either as a | @ the total length of the data in the operation layer, either as a | |||
| single length or as a sequence of chunks each with a length. | single length or as a sequence of chunks each with a length. | |||
| It is REQUIRED that a printer implementation support HTTP over the IANA | It is REQUIRED that a printer implementation support HTTP over the IANA | |||
| assigned Well Known Port 631 (the IPP default port), though a printer | assigned Well Known Port 631 (the IPP default port), though a printer | |||
| implementation may support HTTP over port some other port as well. In | implementation may support HTTP over some other port as well. In | |||
| Moore and Turner Expires May 16, 1999 | ||||
| addition, a printer may have to support another port for privacy (See | addition, a printer may have to support another port for privacy (See | |||
| Section 5 "Security Considerations". | Section 5 "Security Considerations"). | |||
| Note: even though port 631 is the IPP default, port 80 remains the | Note: even though port 631 is the IPP default, port 80 remains the | |||
| default for an HTTP URI. Thus a URI for a printer using port 631 MUST | default for an HTTP URI. Thus a URI for a printer using port 631 MUST | |||
| contain an explicit port, e.g. "http://forest:631/pinetree". | contain an explicit port, e.g. "http://forest:631/pinetree". An HTTP | |||
| URI for IPP with no explicit port implicitly reference port 80, which is | ||||
| Note: Consistent with RFC 2068 (HTTP/1.1), HTTP URI's for IPP implicitly | consistent with the rules for HTTP/1.1. Each HTTP operation MUST use the | |||
| reference port 80. If a URI references some other port, the port number | POST method where the request-URI is the object target of the operation, | |||
| MUST be explicitly specified in the URI. | and where the "Content-Type" of the message-body in each request and | |||
| response MUST be "application/ipp". The message-body MUST contain the | ||||
| Each HTTP operation MUST use the POST method where the request-URI is | operation layer and MUST have the syntax described in section 3.2 | |||
| the object target of the operation, and where the "Content-Type" of the | "Syntax of Encoding". A client implementation MUST adhere to the rules | |||
| message-body in each request and response MUST be "application/ipp". The | for a client described for HTTP1.1 [rfc2068] . A printer (server) | |||
| message-body MUST contain the operation layer and MUST have the syntax | implementation MUST adhere the rules for an origin server described for | |||
| described in section 3.2 "Syntax of Encoding". A client implementation | HTTP1.1 [rfc2068] . | |||
| MUST adhere to the rules for a client described in RFC 2068 [rfc2068]. A | ||||
| printer (server) implementation MUST adhere the rules for an origin | ||||
| server described in RFC 2068. | ||||
| The IPP layer doesn't have to deal with chunking. In the context of CGI | ||||
| scripts, the HTTP layer removes any chunking information in the received | ||||
| data. | ||||
| A client MUST NOT expect a response from an IPP server until after the | ||||
| client has sent the entire response. But a client MAY listen for an | ||||
| error response that an IPP server MAY send before it receives all the | ||||
| data. In this case a client, if chunking the data, can send a premature | ||||
| zero-length chunk to end the request before sending all the data. If the | ||||
| request is blocked for some reason, a client MAY determine the reason by | ||||
| opening another connection to query the server. | ||||
| In the following sections, there are a tables of all HTTP headers which | ||||
| describe their use in an IPP client or server. The following is an | ||||
| explanation of each column in these tables. | ||||
| . the "header" column contains the name of a header | ||||
| . the "request/client" column indicates whether a client sends the | ||||
| header. | ||||
| . the "request/ server" column indicates whether a server supports | ||||
| the header when received. | ||||
| . the "response/ server" column indicates whether a server sends the | ||||
| header. | ||||
| . the "response /client" column indicates whether a client supports | ||||
| the header when received. | ||||
| . the "values and conditions" column specifies the allowed header | ||||
| values and the conditions for the header to be present in a | ||||
| request/response. | ||||
| The table for "request headers" does not have columns for responses, and | ||||
| the table for "response headers" does not have columns for requests. | ||||
| The following is an explanation of the values in the "request/client" | ||||
| and "response/ server" columns. | ||||
| . must: the client or server MUST send the header, | ||||
| . must-if: the client or server MUST send the header when the | ||||
| condition described in the "values and conditions" column is met, | ||||
| . may: the client or server MAY send the header | ||||
| . not: the client or server SHOULD NOT send the header. It is not | ||||
| relevant to an IPP implementation. | ||||
| The following is an explanation of the values in the "response/client" | ||||
| and "request/ server" columns. | ||||
| . must: the client or server MUST support the header, | ||||
| . may: the client or server MAY support the header | ||||
| . not: the client or server SHOULD NOT support the header. It is not | ||||
| relevant to an IPP implementation. | ||||
| 4.1 General Headers | ||||
| The following is a table for the general headers. | ||||
| General- Request Response Values and Conditions | ||||
| Header | ||||
| Client Server Server Client | ||||
| Cache- must not must not "no-cache" only | ||||
| Control | ||||
| Connection must-if must must- must "close" only. Both | ||||
| if client and server | ||||
| SHOULD keep a | ||||
| connection for the | ||||
| duration of a sequence | ||||
| of operations. The | ||||
| client and server MUST | ||||
| include this header | ||||
| for the last operation | ||||
| in such a sequence. | ||||
| Date may may must may per RFC 1123 [rfc1123] | ||||
| from RFC 2068 | ||||
| Pragma must not must not "no-cache" only | ||||
| Transfer- must-if must must- must "chunked" only . | ||||
| Encoding if Header MUST be present | ||||
| if Content-Length is | ||||
| General- Request Response Values and Conditions | ||||
| Header | ||||
| Client Server Server Client | ||||
| absent. | ||||
| Upgrade not not not not | ||||
| Via not not not not | ||||
| 4.2 Request Headers | ||||
| The following is a table for the request headers. | ||||
| Request-Header Client Server Request Values and Conditions | ||||
| Accept may must "application/ipp" only. This | ||||
| value is the default if the | ||||
| client omits it | ||||
| Accept-Charset not not Charset information is within | ||||
| the application/ipp entity | ||||
| Accept-Encoding may must empty and per RFC 2068 [rfc2068] | ||||
| and IANA registry for content- | ||||
| codings | ||||
| Accept-Language not not language information is within | ||||
| the application/ipp entity | ||||
| Authorization must-if must per RFC 2068. A client MUST send | ||||
| this header when it receives a | ||||
| 401 "Unauthorized" response and | ||||
| does not receive a "Proxy- | ||||
| Authenticate" header. | ||||
| From not not per RFC 2068. Because RFC | ||||
| recommends sending this header | ||||
| only with the user's approval, it | ||||
| is not very useful | ||||
| Host must must per RFC 2068 | ||||
| If-Match not not | ||||
| If-Modified- not not | ||||
| Since | ||||
| Request-Header Client Server Request Values and Conditions | ||||
| If-None-Match not not | ||||
| If-Range not not | ||||
| If-Unmodified- not not | ||||
| Since | ||||
| Max-Forwards not not | ||||
| Proxy- must-if not per RFC 2068. A client MUST send | ||||
| Authorization this header when it receives a | ||||
| 401 "Unauthorized" response and a | ||||
| "Proxy-Authenticate" header. | ||||
| Range not not | ||||
| Referer not not | ||||
| User-Agent not not | ||||
| 4.3 Response Headers | ||||
| The following is a table for the request headers. | ||||
| Response- Server Client Response Values and Conditions | ||||
| Header | ||||
| Accept-Ranges not not | ||||
| Age not not | ||||
| Location must-if may per RFC 2068. When URI needs | ||||
| redirection. | ||||
| Proxy- not must per RFC 2068 | An IPP server sends a response for each request that it receives. If an | |||
| Authenticate | IPP server detects an error, it MAY send a response before it has read | |||
| the entire request. If the HTTP layer of the IPP server completes | ||||
| processing the HTTP headers successfully, it MAY send an intermediate | ||||
| response, such as "100 Continue", with no IPP data before sending the | ||||
| IPP response. A client MUST expect such a variety of responses from an | ||||
| IPP server. For further information on HTTP/1.1, consult the HTTP | ||||
| documents [rfc2068]. | ||||
| Public may may per RFC 2068 | 5. Security Considerations | |||
| Retry-After may may per RFC 2068 | The IPP Model document defines an IPP implementation with "privacy" as | |||
| one that implements Secure Socket Layer Version 3 (SSL3). Note: SSL3 | ||||
| is not an IETF standards track specification. SSL3 meets the | ||||
| requirements for IPP security with regards to features such as mutual | ||||
| authentication and privacy (via encryption). The IPP Model document also | ||||
| outlines IPP-specific security considerations and should be the primary | ||||
| reference for security implications with regards to the IPP protocol | ||||
| itself. | ||||
| Server not not | The IPP Model document defines an IPP implementation with | |||
| "authentication" as one that implements the standard way for | ||||
| transporting IPP messages within HTTP 1.1. These include the security | ||||
| considerations outlined in the HTTP 1.1 standard document [rfc2068] and | ||||
| Digest Access Authentication extension [rfc2069]. | ||||
| Vary not not | The current HTTP infrastructure supports HTTP over TCP port 80. IPP | |||
| server implementations MUST offer IPP services using HTTP over the IANA | ||||
| assigned Well Known Port 631 (the IPP default port). IPP server | ||||
| implementations may support other ports, in addition to this port. | ||||
| Warning may may per RFC 2068 | See further discussion of IPP security concepts in the model document | |||
| [ipp-mod]. | ||||
| WWW- must-if must per RFC 2068. When a server needs to | Moore and Turner Expires May 16, 1999 | |||
| Response- Server Client Response Values and Conditions | 5.1 Using IPP with SSL3 | |||
| Header | ||||
| Authenticate authenticate a client. | An assumption is that the URI for a secure IPP Printer object has been | |||
| found by means outside the IPP printing protocol, via a directory | ||||
| service, web site or other means. | ||||
| 4.4 Entity Headers | IPP provides a transparent connection to SSL by calling the | |||
| corresponding URL (a https URI connects by default to port 443). | ||||
| However, the following functions can be provided to ease the integration | ||||
| of IPP with SSL during implementation: | ||||
| The following is a table for the entity headers. | connect (URI), returns a status | |||
| Entity-Header Request Response Values and Conditions | "connect" makes an https call and returns the immediate status of | |||
| the connection as returned by SSL to the user. The status values | ||||
| are explained in section 5.4.2 of the SSL document [ssl]. | ||||
| Client Server Server Client | A session-id may also be retained to later resume a session. The | |||
| SSL handshake protocol may also require the cipher specifications | ||||
| supported by the client, key length of the ciphers, compression | ||||
| methods, certificates, etc. These should be sent to the server and | ||||
| hence should be available to the IPP client (although as part of | ||||
| administration features). | ||||
| Allow not not not not | disconnect (session) | |||
| Content-Base not not not not | to disconnect a particular session. | |||
| Content- may must must must per RFC 2068 and IANA | The session-id available from the "connect" could be used. | |||
| Encoding registry for content | ||||
| codings. | ||||
| Content- not not not not Application/ipp | resume (session) | |||
| Language handles language | ||||
| Content- must-if must must-if must the length of the | to reconnect using a previous session-id. | |||
| Length message-body per RFC | ||||
| 2068. Header MUST be | ||||
| present if Transfer- | ||||
| Encoding is absent.. | ||||
| Content- not not not not | The availability of this information as administration features are left | |||
| Location | for implementers, and need not be specified at this time. | |||
| Content-MD5 may may may may per RFC 2068 | 6. References | |||
| Content-Range not not not not | [char] N. Freed, J. Postel: IANA Charset Registration Procedures, Work | |||
| in Progress (draft-freed-charset-reg-02.txt). | ||||
| Content-Type must must must must "application/ipp" | [dpa] ISO/IEC 10175 Document Printing Application (DPA), June 1996. | |||
| only | ||||
| ETag not not not not | [iana] IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- | |||
| notes/iana/assignments/character-sets. | ||||
| Expires not not not not | [ipp-iig] Hastings, Tom, et al., "Internet Printing Protocol/1.0: | |||
| Implementer's Guide", draft-ietf-ipp-implementers-guide-00.txt, | ||||
| November 1998, work in progress. | ||||
| Last-Modified not not not not | Moore and Turner Expires May 16, 1999 | |||
| 5. Security Considerations | ||||
| The IPP Model document defines an IPP implementation with "privacy" as | [ipp-lpd] Herriot, R., Hastings, T., Jacobs, N., Martin, J., | |||
| one that implements Transport Layer Security (TLS) Version 1.0. TLS | "Mapping between LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp- | |||
| meets the requirements for IPP security with regards to features such as | map-05.txt, November 1998. | |||
| mutual authentication and privacy (via encryption). The IPP Model | ||||
| document also outlines IPP-specific security considerations and should | ||||
| be the primary reference for security implications with regards to the | ||||
| IPP protocol itself. | ||||
| The IPP Model document defines an IPP implementation with | [ipp-mod] R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. | |||
| "authentication" as one that implements the standard way for | Powell, "Internet Printing Protocol/1.0: Model and Semantics", | |||
| transporting IPP messages within HTTP 1.1. , These include the security | <draft-ietf-ipp-model-11.txt>, November, 1998. | |||
| considerations outlined in the HTTP 1.1 standard document [rfc2068] and | ||||
| Digest Authentication extension [rfc2069].. | ||||
| The current HTTP infrastructure supports HTTP over TCP port 80. IPP | [ipp-pro] Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet | |||
| server implementations MUST offer IPP services using HTTP over the IANA | Printing Protocol/1.0: Encoding and Transport", draft-ietf-ipp- | |||
| assigned Well Known Port 631 (the IPP default port). IPP server | pro-07.txt, November 1998. | |||
| implementations may support other ports, in addition to this port.. | ||||
| See further discussion of IPP security concepts in the model document | [ipp-rat] Zilles, S., "Rationale for the Structure and Model and | |||
| Protocol for the Internet Printing Protocol", draft-ietf-ipp- | ||||
| rat-04.txt, November 1998. | ||||
| 6. References | [ipp-req] Wright, D., "Design Goals for an Internet Printing | |||
| Protocol", draft-ietf-ipp-req-03.txt, November, 1998. | ||||
| [rfc822] Crocker, D., "Standard for the Format of ARPA | [rfc822] Crocker, D., "Standard for the Format of ARPA | |||
| Internet Text Messages", RFC 822, August 1982. | Internet Text Messages", RFC 822, August 1982. | |||
| [rfc1123] Braden, S., "Requirements for Internet Hosts - | [rfc1123] Braden, S., "Requirements for Internet Hosts - | |||
| Application and Support", RFC 1123, October, 1989, | Application and Support", RFC 1123, October, 1989. | |||
| [rfc1179] McLaughlin, L. III, (editor), "Line Printer Daemon | [rfc1179] McLaughlin, L. III, (editor), "Line Printer Daemon | |||
| Protocol" RFC 1179, August 1990. | Protocol" RFC 1179, August 1990. | |||
| [rfc1630] T. Berners-Lee, "Universal Resource Identifiers in WWW: | [rfc1543] Postel, J., "Instructions to RFC Authors", RFC 1543, | |||
| A Unifying Syntax for the Expression of Names and Addresses of | October 1993. | |||
| Objects on the Network as used in the Word-Wide Web", RFC 1630, | ||||
| June 1994. | ||||
| [rfc1759] Smith, R., Wright, F., Hastings, T., Zilles, S., and | ||||
| Gyllenskog, J., "Printer MIB", RFC 1759, March 1995. | ||||
| [rfc1738] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform | [rfc1738] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform | |||
| Resource Locators (URL)", RFC 1738, December, 1994. | Resource Locators (URL)", RFC 1738, December, 1994. | |||
| [rfc1543] Postel, J., "Instructions to RFC Authors", RFC 1543, | [rfc1759] Smith, R., Wright, F., Hastings, T., Zilles, S., and | |||
| October 1993. | Gyllenskog, J., "Printer MIB", RFC 1759, March 1995. | |||
| [rfc1766] H. Alvestrand, " Tags for the Identification of | [rfc1766] H. Alvestrand, " Tags for the Identification of | |||
| Languages", RFC 1766, March 1995. | Languages", RFC 1766, March 1995. | |||
| [rfc1808] R. Fielding, "Relative Uniform Resource Locators", | [rfc1808] R. Fielding, "Relative Uniform Resource Locators", | |||
| RFC1808, June 1995 [rfc1903} J. Case, et al. "Textual | RFC1808, June 1995. | |||
| Conventions for Version 2 of the Simple Network Management | ||||
| Protocol (SNMPv2)", RFC 1903, January 1996. | ||||
| [rfc2046] N. Freed & N. Borenstein, Multipurpose Internet Mail | [rfc1903] J. Case, et al. "Textual Conventions for Version 2 of | |||
| Extensions (MIME) Part Two: Media Types. November 1996. | the Simple Network Management Protocol (SNMPv2)", RFC 1903, | |||
| (Obsoletes RFC1521, RFC1522, RFC1590), RFC 2046. | January 1996. | |||
| [rfc2048] N. Freed, J. Klensin & J. Postel. Multipurpose Internet | [rfc2046] N. Freed & N. Borenstein, Multipurpose Internet Mail | |||
| Extensions (MIME) Part Two: Media Types. November 1996, RFC 2046. | ||||
| [rfc2048] N. Freed, J. Klensin & J. Postel. Multipurpose Internet | ||||
| Mail Extension (MIME) Part Four: Registration Procedures. | Mail Extension (MIME) Part Four: Registration Procedures. | |||
| November 1996. (Format: TXT=45033 bytes) (Obsoletes RFC1521, | November 1996 (Also BCP0013), RFC 2048. | |||
| RFC1522, RFC1590) (Also BCP0013), RFC 2048. | ||||
| [rfc2068] R Fielding, et al, "Hypertext Transfer Protocol " | Moore and Turner Expires May 16, 1999 | |||
| HTTP/1.1" RFC 2068, January 1997 | ||||
| [rfc2069] J. Franks, et al, "An Extension to HTTP: Digest Access | [rfc2068] R Fielding, et al, "Hypertext Transfer Protocol . | |||
| Authentication" RFC 2069, January 1997 | HTTP/1.1" RFC 2068, January 1997. | |||
| [rfc2119] S. Bradner, "Key words for use in RFCs to Indicate | [rfc2069] J. Franks, et al, "An Extension to HTTP: Digest Access | |||
| Requirement Levels", RFC 2119 , March 1997 | Authentication" RFC 2069, January 1997. | |||
| [rfc2184] N. Freed, K. Moore, "MIME Parameter Value and Encoded | [rfc2119] S. Bradner, "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119 , March 1997. | ||||
| [rfc2184] N. Freed, K. Moore, "MIME Parameter Value and Encoded | ||||
| Word Extensions: Character Sets, Languages, and Continuations", | Word Extensions: Character Sets, Languages, and Continuations", | |||
| RFC 2184, August 1997, | RFC 2184, August 1997. | |||
| [rfc2234] D. Crocker et al., "Augmented BNF for Syntax | [rfc2234] D. Crocker et al., "Augmented BNF for Syntax | |||
| Specifications: ABNF", RFC 2234. November 1997. | Specifications: ABNF", RFC 2234. November 1997. | |||
| [char] N. Freed, J. Postel: IANA Charset Registration Procedures, Work | [rfc2396] Berners-Lee, T., Fielding, R., Masinter, L., "Uniform | |||
| in Progress (draft-freed-charset-reg-02.txt). | Resource Identifiers (URI): Generic Syntax", RFC 2396, August | |||
| 1998. | ||||
| [dpa] ISO/IEC 10175 Document Printing Application (DPA), June 1996. | ||||
| [iana] IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- | ||||
| notes/iana/assignments/character-sets | ||||
| [ipp-lpd] Herriot, R., Hastings, T., Jacobs, N., Martin, J., | ||||
| "Mapping between LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp- | ||||
| map-04.txt, June 1998. | ||||
| [ipp-mod] Isaacson, S., deBry, R., Hastings, T., Herriot, R., | ||||
| Powell, P., "Internet Printing Protocol/1.0: Model and | ||||
| Semantics" draft-ietf-ipp-mod-10.txt, June, 1998. | ||||
| [ipp-pro] Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet | ||||
| Printing Protocol/1.0: Encoding and Transport", draft-ietf-ipp- | ||||
| pro-06.txt, June, 1998. | ||||
| [ipp-rat] Zilles, S., "Rationale for the Structure and Model and | ||||
| Protocol for the Internet Printing Protocol", draft-ietf-ipp- | ||||
| rat-03.txt, June, 1998. | ||||
| [ipp-req] Wright, D., "Design Goals for an Internet Printing | ||||
| Protocol", draft-ietf-ipp-req-02.txt, June, 1998. | ||||
| 7. Author's Address | 7. Author's Address | |||
| Robert Herriot (editor) Paul Moore | Paul Moore | |||
| Sun Microsystems Inc. Microsoft | Robert Herriot (editor) | |||
| 901 San Antonio Road, MPK-17 One Microsoft Way | Microsoft | |||
| Palo Alto, CA 94303 Redmond, WA 98053 | Sun Microsystems Inc. | |||
| One Microsoft Way | ||||
| 901 San Antonio Road, MPK-17 | ||||
| Redmond, WA 98053 | ||||
| Palo Alto, CA 94303 | ||||
| Phone: 650-786-8995 Phone: 425-936-0908 | Phone: 425-936-0908 | |||
| Fax: 650-786-7077 Fax: 425-93MS-FAX | Phone: 650-786-8995 | |||
| Email: robert.herriot@eng.sun.com Email: paulmo@microsoft.com | Fax: 425-93MS-FAX | |||
| Fax: 650-786-7077 | ||||
| Email: paulmo@microsoft.com | ||||
| Email: robert.herriot@eng.sun.com | ||||
| Sylvan Butler Randy Turner | Randy Turner | |||
| Hewlett-Packard Sharp Laboratories | Sylvan Butler | |||
| 11311 Chinden Blvd. 5750 NW Pacific Rim Blvd | Sharp Laboratories | |||
| Boise, ID 83714 Camas, WA 98607 | Hewlett-Packard | |||
| 5750 NW Pacific Rim Blvd | ||||
| 11311 Chinden Blvd. | ||||
| Camas, WA 98607 | ||||
| Boise, ID 83714 | ||||
| Phone: 208-396-6000 Phone: 360-817-8456 | Phone: 360-817-8456 | |||
| Fax: 208-396-3457 Fax: : 360-817-8436 | Phone: 208-396-6000 | |||
| Email: sbutler@boi.hp.com Email: rturner@sharplabs.com | Fax: : 360-817-8436 | |||
| Fax: 208-396-3457 | ||||
| Email: rturner@sharplabs.com | ||||
| Email: sbutler@boi.hp.com | ||||
| IPP Mailing List: ipp@pwg.org | IPP Mailing List: ipp@pwg.org | |||
| IPP Mailing List Subscription: ipp-request@pwg.org | IPP Mailing List Subscription: ipp-request@pwg.org | |||
| IPP Web Page: http://www.pwg.org/ipp/ | IPP Web Page: http://www.pwg.org/ipp/ | |||
| 8. Other Participants: | 8. Other Participants: | |||
| Chuck Adams - Tektronix Harry Lewis - IBM | Chuck Adams - Tektronix Harry Lewis - IBM | |||
| Ron Bergman - Dataproducts Tony Liao - Vivid Image | Ron Bergman - Dataproducts Tony Liao - Vivid Image | |||
| Keith Carter - IBM David Manchala - Xerox | Keith Carter - IBM David Manchala - Xerox | |||
| Angelo Caruso - Xerox Carl-Uno Manros - Xerox | Angelo Caruso - Xerox Carl-Uno Manros - Xerox | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Jeff Copeland - QMS Jay Martin - Underscore | Jeff Copeland - QMS Jay Martin - Underscore | |||
| Roger Debry - IBM Larry Masinter - Xerox | Roger deBry - IBM Larry Masinter - Xerox | |||
| Lee Farrell - Canon Ira McDonald, Xerox | Lee Farrell - Canon Ira McDonald - High North Inc. | |||
| Sue Gleeson - Digital Bob Pentecost - Hewlett-Packard | Sue Gleeson - Digital Bob Pentecost - Hewlett-Packard | |||
| Charles Gordon - Osicom Patrick Powell - SDSU | Charles Gordon - Osicom Patrick Powell - Astart | |||
| Technologies | ||||
| Brian Grimshaw - Apple Jeff Rackowitz - Intermec | Brian Grimshaw - Apple Jeff Rackowitz - Intermec | |||
| Jerry Hadsell - IBM Xavier Riley - Xerox | Jerry Hadsell - IBM Xavier Riley - Xerox | |||
| Richard Hart - Digital Gary Roberts - Ricoh | Richard Hart - Digital Gary Roberts - Ricoh | |||
| Tom Hastings - Xerox Stuart Rowley - Kyocera | Tom Hastings - Xerox Stuart Rowley - Kyocera | |||
| Stephen Holmstead Richard Schneider - Epson | Stephen Holmstead Richard Schneider - Epson | |||
| Zhi-Hong Huang - Zenographics Shigern Ueda - Canon | Zhi-Hong Huang - Zenographics Shigern Ueda - Canon | |||
| Scott Isaacson - Novell Bob Von Andel - Allegro Software | Scott Isaacson - Novell Bob Von Andel - Allegro Software | |||
| Rich Lomicka - Digital William Wagner - Digital Products | Rich Lomicka - Digital William Wagner - Digital Products | |||
| David Kellerman - Northlake Jasper Wong - Xionics | David Kellerman - Northlake Jasper Wong - Xionics | |||
| Software | Software | |||
| skipping to change at page 25, line 14 ¶ | skipping to change at page 21, line 34 ¶ | |||
| Takami Kurono - Brother Lloyd Young - Lexmark | Takami Kurono - Brother Lloyd Young - Lexmark | |||
| Rich Landau - Digital Peter Zehler - Xerox | Rich Landau - Digital Peter Zehler - Xerox | |||
| Greg LeClair - Epson Frank Zhao - Panasonic | Greg LeClair - Epson Frank Zhao - Panasonic | |||
| Steve Zilles - Adobe | Steve Zilles - Adobe | |||
| 9. Appendix A: Protocol Examples | 9. Appendix A: Protocol Examples | |||
| 9.1 Print-Job Request | 9.1 Print-Job Request | |||
| The following is an example of a Print-Job request with job-name, | The following is an example of a Print-Job request with job-name, | |||
| copies, and sides specified. | copies, and sides specified. The "ipp-attribute-fidelity" attribute is | |||
| set to 'true' so that the print request will fail if the "copies" or the | ||||
| "sides" attribute are not supported or their values are not supported. | ||||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x0002 Print-Job operation-id | 0x0002 Print-Job operation-id | |||
| 0x00000001 1 request-id | 0x00000001 1 request-id | |||
| 0x01 start operation-attributes operation-attributes-tag | 0x01 start operation-attributes operation-attributes-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| skipping to change at page 25, line 37 ¶ | skipping to change at page 22, line 4 ¶ | |||
| us-ascii US-ASCII value | us-ascii US-ASCII value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| 0x001B name-length | 0x001B name-length | |||
| attributes- attributes-natural-language name | attributes- attributes-natural-language name | |||
| natural- | natural- | |||
| language | language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x000B name-length | 0x000B name-length | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| printer-uri printer-uri name | printer-uri printer-uri name | |||
| 0x001A value-length | 0x001A value-length | |||
| http://forest: printer pinetree value | http://forest: printer pinetree value | |||
| 631/pinetree | 631/pinetree | |||
| 0x42 nameWithoutLanguage type value-tag | 0x42 nameWithoutLanguage type value-tag | |||
| 0x0008 name-length | 0x0008 name-length | |||
| job-name job-name name | job-name job-name name | |||
| 0x0006 value-length | 0x0006 value-length | |||
| foobar foobar value | foobar foobar value | |||
| 0x22 boolean type value-tag | ||||
| 0x16 name-length | ||||
| ipp-attribute- ipp-attribute-fidelity name | ||||
| fidelity | ||||
| 0x01 value-length | ||||
| 0x01 true value | ||||
| 0x02 start job-attributes job-attributes-tag | 0x02 start job-attributes job-attributes-tag | |||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0005 name-length | 0x0006 name-length | |||
| copies copies name | copies copies name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 0x00000014 20 value | 0x00000014 20 value | |||
| 0x44 keyword type value-tag | 0x44 keyword type value-tag | |||
| 0x0005 name-length | 0x0005 name-length | |||
| sides sides name | sides sides name | |||
| 0x0013 value-length | 0x0013 value-length | |||
| Octets Symbolic Value Protocol field | ||||
| two-sided- two-sided-long-edge value | two-sided- two-sided-long-edge value | |||
| long-edge | long-edge | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| %!PS... <PostScript> data | %!PS... <PostScript> data | |||
| 9.2 Print-Job Response (successful) | 9.2 Print-Job Response (successful) | |||
| Here is an example of a Print-Job response which is successful: | Here is an example of a successful Print-Job response to the previous | |||
| Print-Job request. The printer supported the "copies" and "sides" | ||||
| attributes and their supplied values. The status code returned is | ||||
| 'successful-ok'. | ||||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x0000 OK (successful) status-code | 0x0000 successful-ok status-code | |||
| 0x00000001 1 request-id | 0x00000001 1 request-id | |||
| 0x01 start operation-attributes operation-attributes-tag | 0x01 start operation-attributes operation-attributes-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| charset | charset | |||
| 0x0008 value-length | 0x0008 value-length | |||
| us-ascii US-ASCII value | us-ascii US-ASCII value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| 0x001B name-length | 0x001B name-length | |||
| attributes- attributes-natural- name | attributes- attributes-natural- name | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| natural-language language | natural-language language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x41 textWithoutLanguage type value-tag | 0x41 textWithoutLanguage type value-tag | |||
| 0x000E name-length | 0x000E name-length | |||
| status-message status-message name | status-message status-message name | |||
| 0x0002 value-length | 0x000D value-length | |||
| OK OK value | successful-ok successful-ok value | |||
| 0x02 start job-attributes job-attributes-tag | 0x02 start job-attributes job-attributes-tag | |||
| 0x21 integer value-tag | 0x21 integer value-tag | |||
| 0x0007 name-length | 0x0006 name-length | |||
| job-id job-id name | job-id job-id name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 147 147 value | 147 147 value | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x0008 name-length | 0x0007 name-length | |||
| job-uri job-uri name | job-uri job-uri name | |||
| 0x001E value-length | 0x001E value-length | |||
| http://forest:63 job 123 on pinetree value | http://forest:63 job 123 on pinetree value | |||
| 1/pinetree/123 | 1/pinetree/123 | |||
| 0x25 nameWithoutLanguage type value-tag | 0x42 nameWithoutLanguage type value-tag | |||
| 0x0008 name-length | 0x0009 name-length | |||
| job-state job-state name | job-state job-state name | |||
| 0x0001 value-length | 0x0004 value-length | |||
| 0x03 pending value | 0x0003 pending value | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 9.3 Print-Job Response (failure) | 9.3 Print-Job Response (failure) | |||
| Here is an example of a Print-Job response which fails because the | Here is an example of an unsuccessful Print-Job response to the previous | |||
| printer does not support sides and because the value 20 for copies is | Print-Job request. It fails because, in this case, the printer does not | |||
| not supported: | support the "sides" attribute and because the value '20' for the | |||
| "copies" attribute is not supported. Therefore, no job is created, and | ||||
| neither a "job-id" nor a "job-uri" operation attribute is returned. The | ||||
| error code returned is 'client-error-attributes-or-values-not-supported' | ||||
| (0x040B). | ||||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x0400 client-error-bad-request status-code | 0x040B client-error-attributes-or- status-code | |||
| values-not-supported | ||||
| 0x00000001 1 request-id | 0x00000001 1 request-id | |||
| 0x01 start operation-attributes operation-attribute tag | 0x01 start operation-attributes operation-attribute tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| charset | charset | |||
| 0x0008 value-length | 0x0008 value-length | |||
| us-ascii US-ASCII value | us-ascii US-ASCII value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| 0x001B name-length | 0x001B name-length | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| attributes- attributes-natural-language name | attributes- attributes-natural-language name | |||
| natural- | natural- | |||
| language | language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x41 textWithoutLanguage type value-tag | 0x41 textWithoutLanguage type value-tag | |||
| 0x000E name-length | 0x000E name-length | |||
| status- status-message name | status- status-message name | |||
| message | message | |||
| 0x000D value-length | 0x002F value-length | |||
| bad-request bad-request value | client-error- client-error-attributes-or- value | |||
| 0x04 start unsupported-attributes unsupported-attributes tag | attributes- values-not-supported | |||
| 0x21 integer type value-tag | or-values- | |||
| 0x000C name-length | not-supported | |||
| job-k-octets job-k-octets name | 0x05 start unsupported-attributes unsupported-attributes tag | |||
| 0x0004 value-length | ||||
| 0x001000000 16777216 value | ||||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0005 name-length | 0x0006 name-length | |||
| copies copies name | copies copies name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 0x00000014 20 value | 0x00000014 20 value | |||
| 0x10 unsupported (type) value-tag | 0x10 unsupported (type) value-tag | |||
| 0x0005 name-length | 0x0005 name-length | |||
| sides sides name | sides sides name | |||
| 0x0000 value-length | 0x0000 value-length | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 9.4 Print-URI Request | 9.4 Print-Job Response (success with attributes ignored) | |||
| Here is an example of a successful Print-Job response to a Print-Job | ||||
| request like the previous Print-Job request, except that the value of | ||||
| 'ipp-attribute-fidelity' is false. The print request succeeds, even | ||||
| though, in this case, the printer supports neither the "sides" attribute | ||||
| nor the value '20' for the "copies" attribute. Therefore, a job is | ||||
| created, and both a "job-id" and a "job-uri" operation attribute are | ||||
| returned. The unsupported attributes are also returned in an Unsupported | ||||
| Attributes Group. The error code returned is 'successful-ok-ignored-or- | ||||
| substituted-attributes' (0x0001). | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x0100 1.0 version-number | ||||
| 0x0001 successful-ok-ignored-or- status-code | ||||
| substituted-attributes | ||||
| 0x00000001 1 request-id | ||||
| 0x01 start operation-attributes operation-attributes-tag | ||||
| 0x47 charset type value-tag | ||||
| 0x0012 name-length | ||||
| attributes- attributes-charset name | ||||
| charset | ||||
| 0x0008 value-length | ||||
| us-ascii US-ASCII value | ||||
| 0x48 natural-language type value-tag | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x001B name-length | ||||
| attributes- attributes-natural- name | ||||
| natural-language language | ||||
| 0x0005 value-length | ||||
| en-us en-US value | ||||
| 0x41 textWithoutLanguage type value-tag | ||||
| 0x000E name-length | ||||
| status-message status-message name | ||||
| 0x002F value-length | ||||
| successful-ok- successful-ok-ignored-or- value | ||||
| ignored-or- substituted-attributes | ||||
| substituted- | ||||
| attributes | ||||
| 0x05 start unsupported- unsupported-attributes | ||||
| attributes tag | ||||
| 0x21 integer type value-tag | ||||
| 0x0006 name-length | ||||
| copies copies name | ||||
| 0x0004 value-length | ||||
| 0x00000014 20 value | ||||
| 0x10 unsupported (type) value-tag | ||||
| 0x0005 name-length | ||||
| sides sides name | ||||
| 0x0000 value-length | ||||
| 0x02 start job-attributes job-attributes-tag | ||||
| 0x21 integer value-tag | ||||
| 0x0006 name-length | ||||
| job-id job-id name | ||||
| 0x0004 value-length | ||||
| 147 147 value | ||||
| 0x45 uri type value-tag | ||||
| 0x0007 name-length | ||||
| job-uri job-uri name | ||||
| 0x001E value-length | ||||
| http://forest:63 job 123 on pinetree value | ||||
| 1/pinetree/123 | ||||
| 0x42 nameWithoutLanguage type value-tag | ||||
| 0x0009 name-length | ||||
| job-state job-state name | ||||
| 0x0004 value-length | ||||
| 0x0003 pending value | ||||
| 0x03 end-of-attributes end-of-attributes-tag | ||||
| 9.5 Print-URI Request | ||||
| The following is an example of Print-URI request with copies and job- | The following is an example of Print-URI request with copies and job- | |||
| name parameters. | name parameters: | |||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x0003 Print-URI operation-id | 0x0003 Print-URI operation-id | |||
| 0x00000001 1 request-id | 0x00000001 1 request-id | |||
| 0x01 start operation-attributes operation-attributes-tag | 0x01 start operation-attributes operation-attributes-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| charset | charset | |||
| 0x0008 value-length | 0x0008 value-length | |||
| us-ascii US-ASCII value | us-ascii US-ASCII value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| skipping to change at page 28, line 30 ¶ | skipping to change at page 26, line 30 ¶ | |||
| language | language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x000B name-length | 0x000B name-length | |||
| printer-uri printer-uri name | printer-uri printer-uri name | |||
| 0x001A value-length | 0x001A value-length | |||
| http://forest printer pinetree value | http://forest printer pinetree value | |||
| :631/pinetree | :631/pinetree | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x000A name-length | 0x000C name-length | |||
| document-uri document-uri name | document-uri document-uri name | |||
| 0x11 value-length | 0x11 value-length | |||
| ftp://foo.com ftp://foo.com/foo value | ftp://foo.com ftp://foo.com/foo value | |||
| /foo | /foo | |||
| 0x42 nameWithoutLanguage type value-tag | 0x42 nameWithoutLanguage type value-tag | |||
| 0x0008 name-length | 0x0008 name-length | |||
| job-name job-name name | job-name job-name name | |||
| 0x0006 value-length | 0x0006 value-length | |||
| foobar foobar value | foobar foobar value | |||
| 0x02 start job-attributes job-attributes-tag | 0x02 start job-attributes job-attributes-tag | |||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0005 name-length | 0x0006 name-length | |||
| copies copies name | copies copies name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 0x00000001 1 value | 0x00000001 1 value | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 9.5 Create-Job Request | 9.6 Create-Job Request | |||
| The following is an example of Create-Job request with no parameters and | The following is an example of Create-Job request with no parameters and | |||
| no attributes | no attributes: | |||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x0005 Create-Job operation-id | 0x0005 Create-Job operation-id | |||
| 0x00000001 1 request-id | 0x00000001 1 request-id | |||
| 0x01 start operation-attributes operation-attributes-tag | 0x01 start operation-attributes operation-attributes-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| Octets Symbolic Value Protocol field | ||||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| attributes- attributes-charset name | ||||
| charset | charset | |||
| 0x0008 value-length | 0x0008 value-length | |||
| us-ascii US-ASCII value | us-ascii US-ASCII value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| 0x001B name-length | 0x001B name-length | |||
| attributes- attributes-natural-language name | attributes- attributes-natural-language name | |||
| natural- | natural- | |||
| language | language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x000B name-length | 0x000B name-length | |||
| printer-uri printer-uri name | printer-uri printer-uri name | |||
| 0x001A value-length | 0x001A value-length | |||
| http://forest: printer pinetree value | http://forest: printer pinetree value | |||
| 631/pinetree | 631/pinetree | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 9.6 Get-Jobs Request | 9.7 Get-Jobs Request | |||
| The following is an example of Get-Jobs request with parameters but no | The following is an example of Get-Jobs request with parameters but no | |||
| attributes. | attributes: | |||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x000A Get-Jobs operation-id | 0x000A Get-Jobs operation-id | |||
| 0x00000123 0x123 request-id | 0x00000123 0x123 request-id | |||
| 0x01 start operation-attributes operation-attributes-tag | 0x01 start operation-attributes operation-attributes-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| charset | charset | |||
| skipping to change at page 30, line 4 ¶ | skipping to change at page 27, line 59 ¶ | |||
| 0x45 uri type value-tag | 0x45 uri type value-tag | |||
| 0x000B name-length | 0x000B name-length | |||
| printer-uri printer-uri name | printer-uri printer-uri name | |||
| 0x001A value-length | 0x001A value-length | |||
| http://forest:6 printer pinetree value | http://forest:6 printer pinetree value | |||
| 31/pinetree | 31/pinetree | |||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0005 name-length | 0x0005 name-length | |||
| limit limit name | limit limit name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| Octets Symbolic Value Protocol field | ||||
| 0x00000032 50 value | 0x00000032 50 value | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x44 keyword type value-tag | 0x44 keyword type value-tag | |||
| 0x0014 name-length | 0x0014 name-length | |||
| requested- requested-attributes name | requested- requested-attributes name | |||
| attributes | attributes | |||
| 0x0006 value-length | 0x0006 value-length | |||
| job-id job-id value | job-id job-id value | |||
| 0x44 keyword type value-tag | 0x44 keyword type value-tag | |||
| 0x0000 additional value name-length | 0x0000 additional value name-length | |||
| 0x0008 value-length | 0x0008 value-length | |||
| job-name job-name value | job-name job-name value | |||
| 0x44 keyword type value-tag | 0x44 keyword type value-tag | |||
| 0x0000 additional value name-length | 0x0000 additional value name-length | |||
| 0x000F value-length | 0x000F value-length | |||
| document-format document-format value | document-format document-format value | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 9.7 Get-Jobs Response | 9.8 Get-Jobs Response | |||
| The following is an of Get-Jobs response from previous request with 3 | The following is an of Get-Jobs response from previous request with 3 | |||
| jobs. The Printer returns no information about the second job. | jobs. The Printer returns no information about the second job (because | |||
| of security reasons): | ||||
| Octets Symbolic Value Protocol field | Octets Symbolic Value Protocol field | |||
| 0x0100 1.0 version-number | 0x0100 1.0 version-number | |||
| 0x0000 OK (successful) status-code | 0x0000 successful-ok status-code | |||
| 0x00000123 0x123 request-id (echoed | 0x00000123 0x123 request-id (echoed | |||
| back) | back) | |||
| 0x01 start operation-attributes operation-attribute-tag | 0x01 start operation-attributes operation-attribute-tag | |||
| 0x47 charset type value-tag | 0x47 charset type value-tag | |||
| 0x0012 name-length | 0x0012 name-length | |||
| attributes- attributes-charset name | attributes- attributes-charset name | |||
| charset | charset | |||
| 0x0008 value-length | 0x000A value-length | |||
| ISO-8859-1 ISO-8859-1 value | ISO-8859-1 ISO-8859-1 value | |||
| 0x48 natural-language type value-tag | 0x48 natural-language type value-tag | |||
| 0x001B name-length | 0x001B name-length | |||
| attributes- attributes-natural-language name | attributes- attributes-natural-language name | |||
| natural- | natural- | |||
| language | language | |||
| 0x0005 value-length | 0x0005 value-length | |||
| en-us en-US value | en-us en-US value | |||
| 0x41 textWithoutLanguage type value-tag | 0x41 textWithoutLanguage type value-tag | |||
| 0x000E name-length | 0x000E name-length | |||
| status-message status-message name | status-message status-message name | |||
| 0x0002 value-length | 0x000D value-length | |||
| OK OK value | successful-ok successful-ok value | |||
| 0x02 start job-attributes (1st job-attributes-tag | 0x02 start job-attributes (1st job-attributes-tag | |||
| object) | object) | |||
| 0x48 natural-language type value-tag | ||||
| 0x001B name-length | ||||
| attributes- attributes-natural-language name | ||||
| natural- | ||||
| language | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x0005 value-length | ||||
| fr-CA fr-CA value | ||||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0006 name-length | 0x0006 name-length | |||
| job-id job-id name | job-id job-id name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 147 147 value | 147 147 value | |||
| 0x42 nameWithoutLanguage type value-tag | ||||
| Moore and Turner Expires May 16, 1999 | ||||
| Octets Symbolic Value Protocol field | ||||
| 0x36 nameWithLanguage value-tag | ||||
| 0x0008 name-length | 0x0008 name-length | |||
| job-name job-name name | job-name job-name name | |||
| 0x0003 name-length | 0x000C value-length | |||
| 0x0005 sub-value-length | ||||
| fr-ca fr-CA value | ||||
| 0x0003 sub-value-length | ||||
| fou fou name | fou fou name | |||
| 0x02 start job-attributes (2nd job-attributes-tag | 0x02 start job-attributes (2nd job-attributes-tag | |||
| object) | object) | |||
| 0x02 start job-attributes (3rd job-attributes-tag | 0x02 start job-attributes (3rd job-attributes-tag | |||
| object) | object) | |||
| 0x21 integer type value-tag | 0x21 integer type value-tag | |||
| 0x0006 name-length | 0x0006 name-length | |||
| job-id job-id name | job-id job-id name | |||
| 0x0004 value-length | 0x0004 value-length | |||
| 148 148 value | 148 148 value | |||
| 0x35 nameWithLanguage value-tag | 0x36 nameWithLanguage value-tag | |||
| 0x0008 name-length | 0x0008 name-length | |||
| job-name job-name name | job-name job-name name | |||
| 0x0012 value-length | 0x0012 value-length | |||
| 0x0005 sub-value-length | 0x0005 sub-value-length | |||
| de-CH de-CH value | de-CH de-CH value | |||
| 0x0009 sub-value-length | 0x0009 sub-value-length | |||
| isch guet isch guet name | isch guet isch guet name | |||
| 0x03 end-of-attributes end-of-attributes-tag | 0x03 end-of-attributes end-of-attributes-tag | |||
| 10. Appendix B: Registration of MIME Media Type Information for | 10. Appendix C: Registration of MIME Media Type Information for | |||
| "application/ipp" | "application/ipp" | |||
| This appendix contains the information that IANA requires for | This appendix contains the information that IANA requires for | |||
| registering a MIME media type. The information following this paragraph | registering a MIME media type. The information following this paragraph | |||
| will be forwarded to IANA to register application/ipp whose contents are | will be forwarded to IANA to register application/ipp whose contents are | |||
| defined in Section 3 "Encoding of the Operation Layer" in this | defined in Section 3 "Encoding of the Operation Layer" in this | |||
| document. | document: | |||
| MIME type name: application | MIME type name: application | |||
| MIME subtype name: ipp | MIME subtype name: ipp | |||
| A Content-Type of "application/ipp" indicates an Internet Printing | A Content-Type of "application/ipp" indicates an Internet Printing | |||
| Protocol message body (request or response). Currently there is one | Protocol message body (request or response). Currently there is one | |||
| version: IPP/1.0, whose syntax is described in Section 3 "Encoding of | version: IPP/1.0, whose syntax is described in Section 3 "Encoding of | |||
| the Operation Layer" of [ipp-pro], and whose semantics are described in | the Operation Layer" of [ipp-pro], and whose semantics are described in | |||
| [ipp-mod] | [ipp-mod]. | |||
| Required parameters: none | Required parameters: none | |||
| Optional parameters: none | Optional parameters: none | |||
| Encoding considerations: | Encoding considerations: | |||
| Moore and Turner Expires May 16, 1999 | ||||
| IPP/1.0 protocol requests/responses MAY contain long lines and ALWAYS | IPP/1.0 protocol requests/responses MAY contain long lines and ALWAYS | |||
| contain binary data (for example attribute value lengths). | contain binary data (for example attribute value lengths). | |||
| Security considerations: | Security considerations: | |||
| IPP/1.0 protocol requests/responses do not introduce any security risks | IPP/1.0 protocol requests/responses do not introduce any security risks | |||
| not already inherent in the underlying transport protocols. Protocol | not already inherent in the underlying transport protocols. Protocol | |||
| mixed-version interworking rules in [ipp-mod] as well as protocol | mixed-version interworking rules in [ipp-mod] as well as protocol | |||
| encoding rules in [ipp-pro] are complete and unambiguous. | encoding rules in [ipp-pro] are complete and unambiguous. | |||
| skipping to change at page 32, line 31 ¶ | skipping to change at page 30, line 31 ¶ | |||
| rules specified in [ipp-pro] are comprehensive, so that interoperability | rules specified in [ipp-pro] are comprehensive, so that interoperability | |||
| between conforming implementations is guaranteed (although support for | between conforming implementations is guaranteed (although support for | |||
| specific optional features is not ensured). Both the "charset" and | specific optional features is not ensured). Both the "charset" and | |||
| "natural-language" of all IPP/1.0 attribute values which are a | "natural-language" of all IPP/1.0 attribute values which are a | |||
| LOCALIZED-STRING are explicit within IPP protocol requests/responses | LOCALIZED-STRING are explicit within IPP protocol requests/responses | |||
| (without recourse to any external information in HTTP, SMTP, or other | (without recourse to any external information in HTTP, SMTP, or other | |||
| message transport headers). | message transport headers). | |||
| Published specification: | Published specification: | |||
| [ipp-mod] Isaacson, S., deBry, R., Hastings, T., Herriot, R., | [ipp-mod] Isaacson, S., deBry, R., Hastings, T., Herriot, R., | |||
| Powell, P., "Internet Printing Protocol/1.0: Model and | Powell, P., "Internet Printing Protocol/1.0: Model and | |||
| Semantics" draft-ietf-ipp-mod-10.txt, June, 1998. | Semantics" draft-ietf-ipp-mod-11.txt, November, 1998. | |||
| [ipp-pro] Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet | [ipp-pro] Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet | |||
| Printing Protocol/1.0: Encoding and Transport", draft-ietf-ipp- | Printing Protocol/1.0: Encoding and Transport", draft-ietf-ipp- | |||
| pro-06.txt, June, 1998. | pro-07.txt, November, 1998. | |||
| Applications which use this media type: | Applications which use this media type: | |||
| Internet Printing Protocol (IPP) print clients and print servers, | Internet Printing Protocol (IPP) print clients and print servers, | |||
| communicating using HTTP/1.1 (see [IPP-PRO]), SMTP/ESMTP, FTP, or other | communicating using HTTP/1.1 (see [IPP-PRO]), SMTP/ESMTP, FTP, or other | |||
| transport protocol. Messages of type "application/ipp" are self- | transport protocol. Messages of type "application/ipp" are self- | |||
| contained and transport-independent, including "charset" and "natural- | contained and transport-independent, including "charset" and "natural- | |||
| language" context for any LOCALIZED-STRING value. | language" context for any LOCALIZED-STRING value. | |||
| Person & email address to contact for further information: | Person & email address to contact for further information: | |||
| skipping to change at page 33, line 4 ¶ | skipping to change at page 30, line 57 ¶ | |||
| Person & email address to contact for further information: | Person & email address to contact for further information: | |||
| Scott A. Isaacson | Scott A. Isaacson | |||
| Novell, Inc. | Novell, Inc. | |||
| 122 E 1700 S | 122 E 1700 S | |||
| Provo, UT 84606 | Provo, UT 84606 | |||
| Phone: 801-861-7366 | Phone: 801-861-7366 | |||
| Fax: 801-861-4025 | Fax: 801-861-4025 | |||
| Email: sisaacson@novell.com | Email: sisaacson@novell.com | |||
| or | or | |||
| Moore and Turner Expires May 16, 1999 | ||||
| Robert Herriot | Robert Herriot | |||
| Sun Microsystems Inc. | Sun Microsystems Inc. | |||
| 901 San Antonio Road, MPK-17 | 901 San Antonio Road, MPK-17 | |||
| Palo Alto, CA 94303 | Palo Alto, CA 94303 | |||
| Phone: 650-786-8995 | Phone: 650-786-8995 | |||
| Fax: 650-786-7077 | Fax: 650-786-7077 | |||
| Email: robert.herriot@eng.sun.com | Email: robert.herriot@eng.sun.com | |||
| Intended usage: | Intended usage: | |||
| COMMON | COMMON | |||
| 11. Appendix C: Full Copyright Statement | 11. Appendix D: Full Copyright Statement | |||
| Copyright (C)The Internet Society (1998). All Rights Reserved | Copyright (C)The Internet Society (1998). All Rights Reserved | |||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it or | others, and derivative works that comment on or otherwise explain it or | |||
| assist in its implementation may be prepared, copied, published and | assist in its implementation may be prepared, copied, published and | |||
| distributed, in whole or in part, without restriction of any kind, | distributed, in whole or in part, without restriction of any kind, | |||
| provided that the above copyright notice and this paragraph are included | provided that the above copyright notice and this paragraph are included | |||
| on all such copies and derivative works. However, this document itself | 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 | may not be modified in any way, such as by removing the copyright notice | |||
| skipping to change at line 1669 ¶ | skipping to change at line 1643 ¶ | |||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| This document and the information contained herein is provided on an "AS | This document and the information contained herein is provided on an "AS | |||
| IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | |||
| FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | |||
| LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | |||
| INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | |||
| FITNESS FOR A PARTICULAR PURPOSE. | FITNESS FOR A PARTICULAR PURPOSE. | |||
| Moore and Turner Expires May 16, 1999 | ||||
| End of changes. 205 change blocks. | ||||
| 623 lines changed or deleted | 597 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||