home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-ipp-protocol-02.txt < prev    next >
Text File  |  1997-11-01  |  79KB  |  2,047 lines

  1.  
  2.  
  3.  
  4. INTERNET-DRAFT
  5.  
  6.  
  7.                                                  Robert Herriot (editor)
  8.                                                         Sun Microsystems
  9.                                                            Sylvan Butler
  10.                                                          Hewlett-Packard
  11.                                                               Paul Moore
  12.                                                               Microsoft.
  13.                                                             Randy Turner
  14.                                                               Sharp Labs
  15.                                                         October 23, 1997
  16.  
  17.          Internet Printing Protocol/1.0: Protocol Specification
  18.                      draft-ietf-ipp-protocol-02.txt
  19.  
  20. Status of this Memo
  21.  
  22. This document is an Internet-Draft.  Internet-Drafts are working
  23. documents of the Internet Engineering Task Force (IETF), its areas, and
  24. its working groups.  Note that other groups may also distribute working
  25. documents as Internet-Drafts.
  26.  
  27. Internet-Drafts are draft documents valid for a maximum of six months
  28. and may be updated, replaced, or obsoleted by other documents at any
  29. time.  It is inappropriate to use Internet-Drafts as reference material
  30. or to cite them other than as "work in progress".
  31.  
  32. To learn the current status of any Internet-Draft, please check the
  33. "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  34. Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  35. munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  36. ftp.isi.edu (US West Coast).
  37.  
  38. Abstract
  39.  
  40. This document is one of a set of documents, which together describe all
  41. aspects of a new Internet Printing Protocol (IPP).  IPP is an
  42. application level protocol that can be used for distributed printing
  43. using Internet tools and technology.  The protocol is heavily influenced
  44. by the printing model introduced in the Document Printing Application
  45. (ISO/IEC 10175 DPA) standard [dpa].  Although DPA specifies both end
  46. user and administrative features, IPP version 1.0 is focused only on end
  47. user functionality.
  48.  
  49. The full set of IPP documents includes:
  50.  
  51.   Internet Printing Protocol: Requirements
  52.   Internet Printing Protocol/1.0: Model and Semantics
  53.   Internet Printing Protocol/1.0: Protocol Specification
  54.  
  55. The requirements document takes a broad look at distributed printing
  56. functionality, and it enumerates real-life scenarios that help to
  57. clarify the features that need to be included in a printing protocol for
  58. the Internet.  It identifies requirements for three types of users: end
  59. users, operators, and administrators.  The requirements document calls
  60. out a subset of end user requirements that MUST be satisfied in the
  61. Herriot, Butler,           October 23, 1997,                   [Page 1]
  62. Moore and Turner         Expires April 23, 1998
  63.  
  64.  
  65. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  66.  
  67.  
  68. first version of IPP.  Operator and administrator requirements are out
  69. of scope for v1.0. The model and semantics document describes a
  70. simplified model with abstract objects, their attributes, and their
  71. operations. The model introduces a Printer object and a Job object.  The
  72. Job object supports multiple documents per job. The protocol
  73. specification is formal document which incorporates the ideas in all the
  74. other documents into a concrete mapping using clearly defined data
  75. representations and transport protocol mappings that real implementers
  76. can use to develop interoperable client and printer (server) side
  77. components.
  78.  
  79. This document is the ''Internet Printing Protocol/1.0: Protocol
  80. Specification'' document.
  81.  
  82. Notice
  83.  
  84. The IETF invites any interested party to bring to its attention any
  85. copyrights, patents or patent applications, or other proprietary rights
  86. which may cover technology that may be required to practice this
  87. standard.  Please address the information to the IETF Executive
  88. Director.
  89.  
  90. Copyright c The Internet Society (date). All Rights Reserved.
  91.  
  92. This document and translations of it may be copied and furnished to
  93. others, and derivative works that comment on or otherwise explain it or
  94. assist in its implmentation may be prepared, copied, published and
  95. distributed, in whole or in part, without restriction of any kind,
  96. provided that the above copyright notice and this paragraph are included
  97. on all such copies and derivative works.  However, this document itself
  98. may not be modified in any way, such as by removing the copyright notice
  99. or references to the Internet Society or other Internet organizations,
  100. except as needed for the  purpose of developing Internet standards in
  101. which case the procedures for copyrights defined in the Internet
  102. Standards process must be followed, or as required to translate it into
  103. languages other than English.
  104.  
  105. The limited permissions granted above are perpetual and will not be
  106. revoked by the Internet Society or its successors or assigns.
  107.  
  108. This document and the information contained herein is provided on an "AS
  109. IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
  110. FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  111. LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
  112. INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
  113. FITNESS FOR A PARTICULAR PURPOSE.
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. Herriot, Butler,           October 23, 1997,                   [Page 2]
  124. Moore and Turner         Expires April 23, 1998
  125.  
  126.  
  127. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  128.  
  129.  
  130.                            Table of Contents
  131.  
  132. 1. Introduction........................................................4
  133. 2. Conformance Terminology.............................................4
  134. 3. Encoding of  the Operation Layer....................................4
  135.    3.1 Picture of the Encoding.........................................5
  136.    3.2 Syntax of Encoding..............................................6
  137.    3.3 Version.........................................................8
  138.    3.4 Mapping of Operations...........................................8
  139.    3.5 Mapping of Status-code..........................................8
  140.    3.6 Tags.............................................................   8
  141.       3.6.1 Delimiter Tags.............................................8
  142.       3.6.2 Value Tags.................................................9
  143.    3.7 Name-Lengths...................................................11
  144.    3.8 Mapping of Attribute  Names....................................11
  145.    3.9 Value Lengths..................................................12
  146.    3.10 Mapping of Attribute Values...................................13
  147.    3.11 Data............................................................   15
  148. 4. Encoding of Transport Layer........................................15
  149.    4.1 General Headers................................................16
  150.    4.2 Request  Headers...............................................17
  151.    4.3 Response Headers...............................................18
  152.    4.4 Entity  Headers................................................18
  153. 5. Security Considerations............................................19
  154. 6. References.........................................................20
  155. 7. Author's Address...................................................21
  156. 8. Other Participants:................................................22
  157. 9. Appendix A: Protocol Examples......................................22
  158.    9.1 Print-Job Request..............................................22
  159.    9.2 Print-Job Response (successful)................................23
  160.    9.3 Print-Job Response (failure)...................................24
  161.    9.4 Print-URI Request..............................................25
  162.    9.5 Create-Job Request.............................................26
  163.    9.6 Get-Jobs Request...............................................26
  164.    9.7 Get-Jobs Response..............................................27
  165. 10. Appendix B: Mapping of Each Operation in the Encoding.............28
  166. 11. Appendix C: Hints to implementors using IPP with SSL3.............32
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185. Herriot, Butler,           October 23, 1997,                   [Page 3]
  186. Moore and Turner         Expires April 23, 1998
  187.  
  188.  
  189. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  190.  
  191.  
  192.  
  193. 1. Introduction
  194.  
  195. This document contains the rules for encoding IPP operations and
  196. describes two layers: the transport layer and the operation layer.
  197.  
  198. The transport layer consists of an  HTTP/1.1 request or response. RFC
  199. 2068 [r2068] describes HTTP/1.1. This document specifies the HTTP
  200. headers that an IPP implementation supports.
  201.  
  202. The operation layer consists of  a message body in an HTTP request or
  203. response.  The document "Internet Printing Protocol/1.0: Model and
  204. Semantics" [ipp-m] defines the semantics of such a message body and the
  205. supported values. This document specifies the encoding of an IPP
  206. operation. The aforementioned document [ipp-m] is henceforth referred to
  207. as the "IPP model document"
  208.  
  209.  
  210. 2. Conformance Terminology
  211.  
  212. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  213. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and  "OPTIONAL" in this
  214. document are to be interpreted as described in RFC 2119 [r2119].
  215.  
  216.  
  217. 3. Encoding of  the Operation Layer
  218.  
  219. The operation layer SHALL contain a single operation request or
  220. operation response.
  221.  
  222. The encoding consists of octets as the most primitive type. There are
  223. several types built from octets, but two important  types are integers
  224. and characters, on which most  other data types are built. Every
  225. character in this encoding SHALL be a member of the UCS-2 coded
  226. character set and SHALL be encoded using UTF-8 which uses 1 to 3 octets
  227. per character. Every integer in this encoding SHALL be encoded as a
  228. signed integer using two's-complement binary encoding with big-endian
  229. format (also known as "network order" and "most significant byte
  230. first"). The number of octets for an integer SHALL be 1, 2 or 4,
  231. depending on usage in the protocol. Such one-octet integers, henceforth
  232. called SIGNED-BYTE, are used for the version and tag fields. Such two-
  233. byte integers, henceforth called SIGNED-SHORT are used for the
  234. operation, status-code and length fields. Four byte integers, henceforth
  235. called SIGNED-INTEGER, are used for values fields.
  236.  
  237. The following two sections present the operation layer in two ways
  238.  
  239.   .  informally through pictures and description
  240.   .  formally through Augmented Backus-Naur Form (ABNF), as specified by
  241.      draft-ietf-drums-abnf-02.txt [abnf]
  242.  
  243.  
  244.  
  245.  
  246.  
  247. Herriot, Butler,           October 23, 1997,                   [Page 4]
  248. Moore and Turner         Expires April 23, 1998
  249.  
  250.  
  251. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  252.  
  253.  
  254. 3.1 Picture of the Encoding
  255.  
  256. The encoding for an operation request or response consists of:
  257.  
  258.   -----------------------------------------------
  259.   |                    version                  |   2 bytes  - required
  260.   -----------------------------------------------
  261.   |operation (request) or status-code (response)|   2 bytes  - required
  262.   -----------------------------------------------------------
  263.   |               xxx-attributes-tag            |   1 byte  |
  264.   -----------------------------------------------           |-0 or more
  265.   |             xxx-attribute-sequence          |   n bytes |
  266.   -----------------------------------------------------------
  267.   |                  data-tag                   |   1 byte   - required
  268.   -----------------------------------------------
  269.   |                     data                    |   q bytes  - optional
  270.   -----------------------------------------------
  271.  
  272. The xxx-attributes-tag and xxx-attribute-sequence represents four
  273. different values of "xxx", namely, operation, job, printer and
  274. unsupported-job. The xxx-attributes-tag and xxx-attribute-sequence may
  275. be omitted if the operation has no attributes or it may be repeated with
  276. the same or different values of "xxx" in ways that are specific to each
  277. operation. The data is omitted from some operations, but the data-tag is
  278. present even when the data is omitted. Note, the xxx-attributestags and
  279. data-tag are called `delimiter-tags'.
  280.  
  281. Note: the xxx-attribute-sequence, shown above may consist of 0 bytes,
  282. according to the rule below.
  283.  
  284. An xxx-attributes-sequence consists of zero or more compound-attributes.
  285.  
  286.   -----------------------------------------------
  287.   |              compound-attribute             |   s bytes - 0 or more
  288.   -----------------------------------------------
  289.  
  290. A compound-attribute consists an attribute with a single value followed
  291. by zero or more additional values.
  292.  
  293. Note: a `compound-attribute' represents a single attribute in the model
  294. document.  The `additional value' syntax is for attributes with 2 or
  295. more values.
  296.  
  297. Each attribute consists of:
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309. Herriot, Butler,           October 23, 1997,                   [Page 5]
  310. Moore and Turner         Expires April 23, 1998
  311.  
  312.  
  313. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  314.  
  315.  
  316.   -----------------------------------------------
  317.   |                   value-tag                 |   1 byte
  318.   -----------------------------------------------
  319.   |               name-length  (value is u)     |   2 bytes
  320.   -----------------------------------------------
  321.   |                     name                    |   u bytes
  322.   -----------------------------------------------
  323.   |              value-length  (value is v)     |   2 bytes
  324.   -----------------------------------------------
  325.   |                     value                   |   v bytes
  326.   -----------------------------------------------
  327.  
  328. An additional value consists of:
  329.  
  330.   -----------------------------------------------------------
  331.   |                   value-tag                 |   1 byte  |
  332.   -----------------------------------------------           |
  333.   |            name-length  (value is 0x0000)   |   2 bytes |
  334.   -----------------------------------------------           |-0 or more
  335.   |              value-length (value is w)      |   2 bytes |
  336.   -----------------------------------------------           |
  337.   |                     value                   |   w bytes |
  338.   -----------------------------------------------------------
  339.  
  340. Note: an additional value is like an attribute whose name-length is 0.
  341.  
  342. From the standpoint of a parsing loop, the encoding consists of:
  343.  
  344.   -----------------------------------------------
  345.   |                    version                  |   2 bytes  - required
  346.   -----------------------------------------------
  347.   |operation (request) or status-code (response)|   2 bytes  - required
  348.   -----------------------------------------------------------
  349.   |        tag (delimiter-tag or value-tag)     |   1 byte  |
  350.   -----------------------------------------------           |-0 or more
  351.   |           empty or rest of attribute        |   x bytes |
  352.   -----------------------------------------------------------
  353.   |                   data-tag                  |   2 bytes  - required
  354.   -----------------------------------------------
  355.   |                     data                    |   y bytes  - optional
  356.   -----------------------------------------------
  357.  
  358.  
  359. The value of the tag determines whether the bytes following the tag are:
  360.  
  361.   .  attributes
  362.   .  data
  363.   .  the remainder of a single attribute where the tag specifies the
  364.      type of the value.
  365.  
  366. 3.2 Syntax of Encoding
  367.  
  368. The syntax below is ABNF [abnf] except `strings of literals' SHALL be
  369. case sensitive. For example `a' means lower case  `a' and not upper case
  370.  
  371. Herriot, Butler,           October 23, 1997,                   [Page 6]
  372. Moore and Turner         Expires April 23, 1998
  373.  
  374.  
  375. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  376.  
  377.  
  378. `A'.   In addition, SIGNED-BYTE and SIGNED-SHORT fields are represented
  379. as `%x' values which show their range of values.
  380.  
  381.   ipp-message = ipp-request / ipp-response
  382.   ipp-request = version operation
  383.            *(xxx-attributes-tag  xxx-attribute-sequence) data-tag data
  384.   ipp-response = version status-code
  385.            *(xxx-attributes-tag xxx-attribute-sequence)  data-tag  data
  386.   xxx-attribute-sequence = *compound-attribute
  387.        ; where "xxx" in the three rules above stands for any of the
  388.   following
  389.        ; values:  "operation",  "job", "printer" or "unsupported-job".
  390.  
  391.  
  392.   version = major-version minor-version
  393.   major-version = SIGNED-BYTE  ; initially %d1
  394.   minor-version = SIGNED-BYTE  ; initially %d0
  395.  
  396.   operation = SIGNED-SHORT    ; mapping from model defined below
  397.   status-code = SIGNED-SHORT  ; mapping from model defined below
  398.  
  399.   compound-attribute = attribute *additional-values
  400.  
  401.   attribute = value-tag name-length name value-length value
  402.   additional-values = value-tag zero-name-length value-length value
  403.  
  404.   name-length = SIGNED-SHORT    ; number of octets of `name'
  405.   name = LALPHA *( LALPHA / DIGIT / "-" / "_" / "." )
  406.   value-length = SIGNED-SHORT  ; number of octets of `value'
  407.   value = OCTET-STRING
  408.  
  409.   data = OCTET-STRING
  410.  
  411.   zero-name-length = %x00.00  ; name-length of 0
  412.   operation-attributes-tag=  %x01            ; tag of 1
  413.   job-attributes-tag     =  %x02             ; tag of 2
  414.   printer-attributes-tag =  %x04             ; tag of 4
  415.   unsupported-job-attributes-tag =  %x05     ; tag of 5
  416.   data-tag = %x03                                              ; tag of
  417.   3
  418.   value-tag = %x10-FF
  419.  
  420.   SIGNED-BYTE = BYTE
  421.   SIGNED-SHORT = 2BYTE
  422.   DIGIT = %x30-39    ;  "0" to "9"
  423.   LALPHA = %x61-7A   ;  "a" to "z"
  424.   BYTE = %x00-FF
  425.   OCTET-STRING = *BYTE
  426.  
  427. The syntax allows an xxx-attributestag to be present when the xxx-
  428. attribute-sequence that follows is empty. The syntax is defined this way
  429. to allow for the response of Get-Jobs where no attributes are returned
  430. for some job-objects.  Although it is RECOMMENDED that the sender not
  431. send an xxx-attributestag if there are no attributes (except in the Get-
  432.  
  433. Herriot, Butler,           October 23, 1997,                   [Page 7]
  434. Moore and Turner         Expires April 23, 1998
  435.  
  436.  
  437. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  438.  
  439.  
  440. Jobs response just mentioned), the receiver MUST be able to decode such
  441. syntax.
  442.  
  443.  
  444. 3.3 Version
  445.  
  446. The version SHALL consist of a major and minor version, each of which
  447. SHALL be represented by a SIGNED-BYTE. The protocol described in this
  448. document SHALL have a major version of 1 (0x01) and a minor version of
  449. 0 (0x00).  The ABNF for these two bytes SHALL be %x01.00.
  450.  
  451.  
  452. 3.4 Mapping of Operations
  453.  
  454. Operations are defined as enums in the model document. An operations
  455. enum value SHALL be encoded as a SIGNED-SHORT
  456.  
  457. Note: the values 0x4000 to 0xFFFF are reserved for private extensions.
  458.  
  459.  
  460. 3.5 Mapping of Status-code
  461.  
  462. Status-codes are defined as enums in the model document. A status-code
  463. enum value SHALL be encoded as a SIGNED-SHORT
  464.  
  465. If an IPP status-code is returned, then the HTTP Status-Code MUST be 200
  466. (OK). With any other HTTP Status-Code value, the HTTP response SHALL NOT
  467. contain an IPP message-body, and thus no IPP status-code is returned.
  468.  
  469.  
  470. 3.6 Tags
  471.  
  472. There are two kinds of tags:
  473.  
  474.   .  delimiter tags: delimit major sections of the protocol, namely
  475.      attributes and data
  476.   .  value tags: specify the type of each attribute value
  477.  
  478. 3.6.1 Delimiter Tags
  479.  
  480.  
  481. The following table specifies the values for the delimiter tags:
  482.  
  483.  
  484.    Tag Value (Hex)    Delimiter
  485.  
  486.    0x00               reserved
  487.    0x01               operation-attributes-tag
  488.    0x02               job-attributes-tag
  489.    0x03               data-tag
  490.    0x04               printer-attributes-tag
  491.    0x05               unsupported-job-attributes-tag
  492.    0x06-0x0F          reserved for future delimiters
  493.  
  494.  
  495. Herriot, Butler,           October 23, 1997,                   [Page 8]
  496. Moore and Turner         Expires April 23, 1998
  497.  
  498.  
  499. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  500.  
  501.  
  502. When an xxx-attributes-tag occurs in the protocol, it SHALL mean that
  503. the zero or more following attributes up to the next delimiter tag are
  504. xxx attributes as defined in the model document, where xxx is operation,
  505. job, printer, unsupported-job.
  506.  
  507. Doing substitution for xxx in the above paragraph, this means the
  508. following. When an operation-attributes-tag occurs in the protocol, it
  509. SHALL mean that the zero or more following attributes up to the next
  510. delimiter tag are operation attributes as defined in the model document.
  511. When an job-attributes-tag occurs in the protocol, it SHALL mean that
  512. the zero or more following attributes up to the next delimiter tag are
  513. job attributes as defined in the model document. When an printer-
  514. attributes-tag occurs in the protocol, it SHALL mean that the zero or
  515. more following attributes up to the next delimiter tag are printer
  516. attributes as defined in the model document. When an unsupported-job-
  517. attributes-tag occurs in the protocol, it SHALL mean that the zero or
  518. more following attributes up to the next delimiter tag are unsupported-
  519. job attributes as defined in the model document.
  520.  
  521. Each of the  four xxx-attributes-tags defined above is OPTIONAL in an
  522. operation and each SHALL occur at most once in an operation, except for
  523. job-attributes-tag in a Get-Jobs response which may occur zero or more
  524. times.  The data-tag SHALL occur exactly once in an operation.
  525.  
  526. If an operation contains an operations-attribute-tag, it SHALL be the
  527. first tag delimiter.  The data-tag SHALL be the last tag delimiter.
  528.  
  529. The order and presence of delimiter tags for each operation request and
  530. each operation response SHALL be that defined in the model document. For
  531. further details, see Section 3.8 Mapping of Attribute  Names and
  532. Appendix B: Mapping of Each Operation in the Encoding.
  533.  
  534.  
  535. 3.6.2 Value Tags
  536.  
  537.  
  538. The remaining tables show values for the value-tag, which is the first
  539. octet of  an attribute. The value-tag specifies the type of the value of
  540. the attribute. The value of the value-tag of an attribute SHALL either
  541. be a type value specified in the model document or an "out-of-band"
  542. value, such as "unsupported" or "default". If  the value of value-tag
  543. for an attribute is not "out-of-band" and differs from the value type
  544. specified by the model document, then a printer receiving such a request
  545. MAY reject the attribute or just the value.  A client receiving such a
  546. response MAY ignore the attribute or just the value.
  547.  
  548. If  ipp-attribute-fidelity is true and a printer rejects a value, it is
  549. the same as rejecting the attribute. If  ipp-attribute-fidelity is false
  550. and a printer rejects a value, or it a client rejects a value, then it
  551. is as if the attribute didn't have that value. If after rejecting
  552. values, the attribute no longer has any values the attribute is
  553. rejected.
  554.  
  555.  
  556.  
  557. Herriot, Butler,           October 23, 1997,                   [Page 9]
  558. Moore and Turner         Expires April 23, 1998
  559.  
  560.  
  561. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  562.  
  563.  
  564. Note: the intent of the above rule is for servers to be able to
  565. understand text and name values when they don't support the
  566. naturalLanguage override for the value.
  567.  
  568. The following table specifies the "out-of-band" values for the value-
  569. tag.
  570.  
  571.  
  572.    Tag Value (Hex)  Meaning
  573.  
  574.    0x10             unsupported
  575.    0x11             default
  576.    0x12             no-value
  577.    0x13             compoundValue
  578.    0x14-0x1F        reserved for future "out-of-band" values.
  579.  
  580. The "unsupported" value SHALL be used in the attribute-sequence of an
  581. error response for those attributes which the printer does not support.
  582. The "default" value is reserved for future use of setting value back to
  583. their default value. The "no-value" value is used for the "no-value"
  584. value in model, e.g. when a document-attribute is returned as a set of
  585. values and an attribute has no specified value for one or more of the
  586. documents. The "compoundValue"  SHALL be used to form a single value
  587. from a collection of values, and its value is the number of members
  588. forming the compound value, excluding the compoundValue.  For example, a
  589. text value with a naturalLanguage override consists of 3 "values": a
  590. compoundValue with value 2, a naturalLanguage value and a text value.
  591.  
  592. The following table specifies the integer values for the value-tag
  593.  
  594.  
  595.    Tag Value (Hex)   Meaning
  596.  
  597.    0x20              reserved
  598.    0x21              integer
  599.    0x22              boolean
  600.    0x23              enum
  601.    0x24-0x2F         reserved for future integer types
  602.  
  603. NOTE: 0x20 is reserved for "generic integer" if should ever be needed.
  604.  
  605. The following table specifies the octetString values for the value-tag
  606.  
  607.  
  608.    Tag Value (Hex)   Meaning
  609.  
  610.    0x30              octetString with an  unspecified format
  611.    0x31              dateTime
  612.    0x32              resolution
  613.    0x33              rangeOfInteger
  614.    0x34              reserved for dictionary (in the future)
  615.    0x35-0x3F         reserved for future octetString types
  616.  
  617.  
  618.  
  619. Herriot, Butler,           October 23, 1997,                  [Page 10]
  620. Moore and Turner         Expires April 23, 1998
  621.  
  622.  
  623. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  624.  
  625.  
  626. The following table specifies the character-string values for the value-
  627. tag
  628.  
  629.  
  630.    Tag Value (Hex)   Meaning
  631.  
  632.    0x40              reserved
  633.    0x41              text
  634.    0x42              name
  635.    0x43              reserved
  636.    0x44              keyword
  637.    0x45              uri
  638.    0x46              uriScheme
  639.    0x47              charSet
  640.    0x48              naturalLanguage
  641.    0x49              mediaType
  642.    0x4A-0x5F         reserved for future character string types
  643.  
  644. NOTE: 0x40 is reserved for "generic character-string" if should ever be
  645. needed.
  646.  
  647. The values 0x60-0xFF are reserved for future types. There are no values
  648. allocated for private extensions. A new type must be registered via the
  649. type 2 process.
  650.  
  651.  
  652. 3.7 Name-Lengths
  653.  
  654. The name-length field SHALL consist of a SIGNED-SHORT. This field SHALL
  655. specify the number of octets in the name field which follows the name-
  656. length field, excluding the two bytes of the name-length field.
  657.  
  658. If a name-length field has a value of zero, the following name field
  659. SHALL be empty, and the following value SHALL be treated as an
  660. additional value for the preceding attribute. Within an attribute-
  661. sequence, if two attributes have the same name, the first occurrence
  662. SHALL be ignored. The zero-length name is the only mechanism for multi-
  663. valued attributes.
  664.  
  665.  
  666. 3.8 Mapping of Attribute  Names
  667.  
  668. Some attributes are encoded in a special position.  These attribute are:
  669.  
  670.   .  "printer-uri": The target printer-uri of each operation in the IPP
  671.      model document SHALL be specified outside of  the operation layer
  672.      as the request-URI on the Request-Line at the HTTP level.
  673.   .  "job-uri": The target job-uri of each operation in the IPP model
  674.      document SHALL be specified outside of  the operation layer as the
  675.      request-URI on the Request-Line at the HTTP level.
  676.   .   "document-content": The attribute named "document-content" in the
  677.      IPP model document SHALL become the "data" in the operation layer.
  678.  
  679.  
  680.  
  681. Herriot, Butler,           October 23, 1997,                  [Page 11]
  682. Moore and Turner         Expires April 23, 1998
  683.  
  684.  
  685. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  686.  
  687.  
  688.   .  "status-code": The attribute named "status-code" in the IPP model
  689.      document SHALL become the "status-code" field in the operation
  690.      layer response.
  691.  
  692. The model document arranges the remaining attributes into groups for
  693. each operation request and response. Each such group SHALL be
  694. represented in the protocol by an xxx-attribute-sequence preceded by the
  695. appropriate xxx-attributes-tag (See the table below and Appendix B:
  696. Mapping of Each Operation in the Encoding). In addition, the order of
  697. these xxx-attributes-tags and xxx-attribute-sequences in the protocol
  698. SHALL be the same as in the model document, but the order of attributes
  699. within each xxx-attribute-sequence SHALL be unspecified. The table below
  700. maps the model document group name to xxx-attributes-sequence
  701.  
  702.  
  703. Model Document Group           xxx-attributes-sequence
  704.  
  705. Operation Attributes           operations-attributes-sequence
  706. Job Template Attributes        job-attributes-sequence
  707. Job Object Attributes          job-attributes-sequence
  708. Unsupported Attributes         unsupported-job-attributes-sequence
  709. Requested Attributes (Get-     job-attributes-sequence
  710. Attributes of job object)
  711. Requested Attributes (Get-     printer-attributes-sequence
  712. Attributes of printer object)
  713. Document Content               in a special position as described above
  714. ISSUE: coordinate this with the model document.
  715.  
  716. If an operation contains attributes from more than one job object (e.g.
  717. Get-Jobs response), the attributes from each job object SHALL be in a
  718. separate job-attribute-sequence, such that the attributes from the ith
  719. job object are in the ith job-attribute-sequence. See  Section 10
  720. "Appendix B: Mapping of Each Operation in the Encoding" for table
  721. showing the application of the rules above.
  722.  
  723.  
  724. 3.9 Value Lengths
  725.  
  726. Each attribute value SHALL be preceded by a SIGNED-SHORT which SHALL
  727. specify the number of octets in the value which follows this length,
  728. exclusive of the two bytes specifying the length.
  729.  
  730. For any of the types represented by binary signed integers, the sender
  731. MUST encode the value in exactly four octets..
  732.  
  733. For any of the types represented by character-strings, the sender MUST
  734. encode the value with all the characters of the string and without any
  735. padding characters.
  736.  
  737. If a value-tag contains an "out-of-band" value, such as "unsupported",
  738. the value-length SHALL be 0 and the value empty " the value has no
  739. meaning when the value-tag has an "out-of-band" value. If a printer or
  740. client receives an operation with a nonzero value-length in this case,
  741. it SHALL ignore the value field.
  742.  
  743. Herriot, Butler,           October 23, 1997,                  [Page 12]
  744. Moore and Turner         Expires April 23, 1998
  745.  
  746.  
  747. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  748.  
  749.  
  750. 3.10 Mapping of Attribute Values
  751.  
  752. The following SHALL be the mapping of attribute values to their IPP
  753. encoding in the value field. The syntax types are defined in the IPP
  754. model document.
  755.  
  756.  
  757.    Syntax of        Encoding
  758.    Attribute Value
  759.  
  760.    text             an octet string whose charset and language is
  761.                     that specified within the operation request or
  762.                     response.
  763.                     The attributes-charset attribute with a value of
  764.                     type `charset' MUST be in the operations-
  765.                     attribute sequence unless the request or response
  766.                     contains no attributes. It specifies the charset
  767.                     for all text and name values of attributes.
  768.                     The attributes-natural-language attribute with a
  769.                     value of type `naturalLanguage' MUST be in the
  770.                     operations-attribute sequence unless the request
  771.                     or response contains no attributes. It specifies
  772.                     the language for all text and name values of
  773.                     attributes unless overridden.  The language can
  774.                     be overridden on a per-object or a per-value
  775.                     basis.
  776.                     The language can be overridden on a per-object
  777.                     basis only for a job-sequence within a Get-Jobs
  778.                     response. If the attributes-natural-language
  779.                     attribute is present within such a context, it
  780.                     must have a value of type `naturalLanguage' and
  781.                     it overrides the language for all text and name
  782.                     attributes within the job-attributes sequence
  783.                     containing it, but not for attributes in any
  784.                     other xxx-attribute-sequence.
  785.                     The language can be overridden on a per-value
  786.                     basis by syntactically preceding the text or name
  787.                     value by two values: a value of type
  788.                     compoundValue whose value is 2 and a value of
  789.                     type naturalLanguage whose value is the language
  790.                     override. From a protocol syntax view, the
  791.                     compoundValue, the naturalLanguage value and the
  792.                     text or name value appear as three separate
  793.                     values of a single attribute, but from a semantic
  794.                     view, the Printer treats them as a single value
  795.                     where the naturalLanguage value overrides the
  796.                     language of the immediately following text or
  797.                     name value in the attribute.  Any text or name
  798.                     values in the same or other attributes are not
  799.                     affected by the override.  If an attribute
  800.                     consists of a single text or name value, the
  801.                     language value turns it into an attribute with
  802.                     two values from a syntactic view.
  803.                     The text is encoded in "network byte order" with
  804.  
  805. Herriot, Butler,           October 23, 1997,                  [Page 13]
  806. Moore and Turner         Expires April 23, 1998
  807.  
  808.  
  809. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  810.  
  811.  
  812.  
  813.    Syntax of        Encoding
  814.    Attribute Value
  815.  
  816.                     the first character in the text (according to
  817.                     reading order) being the first character in the
  818.                     encoding.
  819.    name             same as text
  820.    charset          an octet string of US-ASCII encoded characters
  821.                     specified in RFC 2046 [r2046] and contained in
  822.                     the IANA character-set Registry [iana] according
  823.                     to the IANA procedures [char].
  824.    naturalLanguage  an octet string of US-ASCII encoded characters
  825.                     and with a syntax specified by RFC 1766 [r1766]
  826.    mediaType        an octet string of US-ASCII encoded characters
  827.                     defined by RFC 2046 [r2046] and registered
  828.                     according to the procedures of RFC 2048 [r2048]
  829.                     for identifying a document format.  The value MAY
  830.                     include a charset parameter, depending on the
  831.                     specification of the Media Type in the IANA
  832.                     Registry [iana]. Examples:
  833.    keyword          an octet string of US-ASCII encoded characters. .
  834.                     Allowed values are defined in the IPP model
  835.                     document
  836.    uri              as specified by RFC 1630 [r1630]
  837.    uriScheme        same as keyword
  838.    boolean          one binary octet where 0x00 is `false' and 0x01
  839.                     is `true'
  840.    integer          a SIGNED-INTEGER, defined previously as a signed
  841.                     integer using two's-complement binary encoding in
  842.                     four octets with big-endian format (also known as
  843.                     "network order" and "most significant byte
  844.                     first").
  845.    enum             same as integer. Allowed integer values are
  846.                     defined in the IPP model document
  847.    compoundValue    has the same representation as an integer, but
  848.                     with a different meaning. If the value of a
  849.                     compoundValue is n, then the n following values
  850.                     of the attribute form a single value.  For
  851.                     example, if an attribute has 3 successive values:
  852.                     compoundValue of 2, naturalLanuage of `fr-CA' and
  853.                     name of `bete', then these three "values" form a
  854.                     single value which is a name of  `bete' in
  855.                     Canadian French.
  856.    dateTime         eleven octets whose contents are defined by
  857.                     "DateAndTime" in RFC 1903 [r1903]. Although RFC
  858.                     1903 also defines an eight octet format which
  859.                     omits the time zone, a value of this type in the
  860.                     IPP protocol MUST use the eleven octet format.
  861.    resolution       nine octets consisting of  2 SIGNED-INTEGERs
  862.                     followed by a SIGNED-BYTE. The values are the
  863.                     same as those specified in RFC 1759 (Printer MIB)
  864.                     [r1759]. The first SIGNED-INTEGER contains the
  865.                     value of prtMarkerAddressabilityXFeedDir. The
  866.  
  867. Herriot, Butler,           October 23, 1997,                  [Page 14]
  868. Moore and Turner         Expires April 23, 1998
  869.  
  870.  
  871. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  872.  
  873.  
  874.  
  875.    Syntax of        Encoding
  876.    Attribute Value
  877.  
  878.                     second SIGNED-INTEGER contains the value of
  879.                     prtMarkerAddressabilityFeedDir. The SIGNED-BYTE
  880.                     contains the value of
  881.                     prtMarkerAddressabilityUnit.  Note: the latter
  882.                     value is either 3 (tenThousandsOfInches) or 4
  883.                     (micrometers) and the addressability is in 10,000
  884.                     units of measure. Thus the SIGNED-INTEGERS
  885.                     represent integral values in either dots-per-inch
  886.                     or dots-per-centimeter.
  887.    rangeOf  integer Eight octets consisting of 2 SIGNED-INTEGERs. The
  888.                     first SIGNED-INTEGERs contains the lowest value
  889.                     of the range and the second SIGNED-INTEGERs
  890.                     contains the highest value of the range
  891.    1setOf  X        encoding according to the rules for an attribute
  892.                     with more than more value.  Each value X is
  893.                     encoded according to the rules for encoding its
  894.                     type.
  895.  
  896. The type of the value in the model document determines the encoding in
  897. the value and the value of the value-tag.
  898.  
  899.  
  900. 3.11 Data
  901.  
  902. The data part SHALL include any data required by the operation
  903.  
  904.  
  905. 4. Encoding of Transport Layer
  906.  
  907. HTTP/1.1 shall be the transport layer for this protocol.
  908.  
  909. The operation layer has been designed with the assumption that the
  910. transport layer contains the following information:
  911.  
  912.   .  the URI of the target job or printer operation
  913.   .  the total length of the data in the operation layer, either as a
  914.      single length or as a sequence of chunks each with a length.
  915. It is REQUIRED that a printer support HTTP over port 80, though a
  916. printer may support HTTP over port 516 or some other port.  In addition,
  917. a printer may have to support another port for secure connections.
  918.  
  919. Note: Consistent with RFC 2068 (HTTP/1.1), HTTP URI's for IPP implicitly
  920. reference port 80. If a URI references some other port, the port number
  921. must be explicitly specified in the URI.
  922.  
  923. Each HTTP operation shall use the POST method where the request-URI is
  924. the object target of the operation, and where the "Content-Type" of the
  925. message-body in each request and response shall be "application/ipp".
  926. The message-body shall contain the operation layer and shall have the
  927. syntax described in section 3.2 "Syntax of Encoding". A client
  928.  
  929. Herriot, Butler,           October 23, 1997,                  [Page 15]
  930. Moore and Turner         Expires April 23, 1998
  931.  
  932.  
  933. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  934.  
  935.  
  936. implementation SHALL adhere to the rules for a client described in RFC
  937. 2068 [r2068]. A printer (server) implementation SHALL adhere the rules
  938. for an origin server described in RFC 2068.In the following sections,
  939. there are a tables of all HTTP headers which describe their use in an
  940. IPP client or server.  The following is an explanation of each column in
  941. these tables.
  942.  
  943.   .  the "header" column contains the name of a header
  944.   .  the "request/client" column indicates whether a client sends the
  945.      header.
  946.   .  the "request/ server" column indicates whether a server supports
  947.      the header when received.
  948.   .  the "response/ server" column indicates whether a server sends the
  949.      header.
  950.   .  the "response /client" column indicates whether a client supports
  951.      the header when received.
  952.   .  the "values and conditions" column specifies the allowed header
  953.      values and the conditions for the header to be present in a
  954.      request/response.
  955.  
  956. The table for "request headers" does not have columns for responses, and
  957. the table for "response headers" does not have columns for requests.
  958.  
  959. The following is an explanation of the values in the "request/client"
  960. and "response/ server" columns.
  961.  
  962.   .  must: the client or server MUST send the header,
  963.   .  must-if: the client or server MUST send the header when the
  964.      condition described in the "values and conditions" column is met,
  965.   .  may: the client or server MAY send the header
  966.   .  not: the client or server SHOULD NOT send the header. It is not
  967.      relevant to an IPP implementation.
  968.  
  969. The following is an explanation of the values in the "response/client"
  970. and "request/ server" columns.
  971.  
  972.   .  must: the client or server MUST support the header,
  973.   .  may: the client or server MAY support the header
  974.   .  not: the client or server SHOULD NOT support the header. It is not
  975.      relevant to an IPP implementation.
  976.  
  977. 4.1 General Headers
  978.  
  979. The following is a table for the general headers.
  980.  
  981. ISSUE: an HTTP expert should review these tables for accuracy.
  982.  
  983.  
  984. General-     Request         Response        Values and Conditions
  985. Header
  986.  
  987.  
  988.              Client   Server Server  Client
  989.  
  990.  
  991. Herriot, Butler,           October 23, 1997,                  [Page 16]
  992. Moore and Turner         Expires April 23, 1998
  993.  
  994.  
  995. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  996.  
  997.  
  998.  
  999. General-     Request         Response        Values and Conditions
  1000. Header
  1001.  
  1002.  
  1003.              Client   Server Server  Client
  1004.  
  1005. Cache-       must     not    must    not     "no-cache" only
  1006. Control
  1007. Connection   must-if  must   must-   must    "close" only. Both
  1008.                              if              client and server
  1009.                                              SHOULD keep a
  1010.                                              connection for the
  1011.                                              duration of a sequence
  1012.                                              of operations. The
  1013.                                              client and server MUST
  1014.                                              include this header
  1015.                                              for the last operation
  1016.                                              in such a sequence.
  1017. Date         may      may    must    may     per RFC 1123 [r1123]
  1018. Pragma`      must     not    must    not     "no-cache" only
  1019. Transfer-    must-if  must   must-   must    "chunked" only .
  1020. Encoding                     if              Header MUST be present
  1021.                                              if Content-Length is
  1022.                                              absent.
  1023. Upgrade      not      not    not     not
  1024. Via          not      not    not     not
  1025.  
  1026.  
  1027. 4.2 Request  Headers
  1028.  
  1029. The following is a table for the request headers.
  1030.  
  1031.  
  1032. Request-Header   Client    Server  Request Values and Conditions
  1033.  
  1034. Accept           may       must    "application/ipp" only.  This
  1035.                                    value is the default if the
  1036.                                    client omits it
  1037. Accept-Charset   not       not      Charset information is within
  1038.                                    the application/ipp entity
  1039. Accept-Encoding  may       must    empty and per RFC 2068 [r2068]
  1040.                                    and IANA registry for content-
  1041.                                    codings
  1042. Accept-Language  not       not     . language information is within
  1043.                                    the application/ipp entity
  1044. Authorization    must-if   must    per RFC 2068. A client MUST send
  1045.                                    this header when it receives a
  1046.                                    401 "Unauthorized" response and
  1047.                                    does not receive a  "Proxy-
  1048.                                    Authenticate" header.
  1049. From             not       not     per RFC 2068. Because RFC
  1050.                                    recommends sending this header
  1051.                                    only with the user's approval, it
  1052.  
  1053. Herriot, Butler,           October 23, 1997,                  [Page 17]
  1054. Moore and Turner         Expires April 23, 1998
  1055.  
  1056.  
  1057. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1058.  
  1059.  
  1060.  
  1061. Request-Header   Client    Server  Request Values and Conditions
  1062.  
  1063.                                    is not very useful
  1064. Host             must      must    per RFC 2068
  1065. If-Match         not       not
  1066. If-Modified-     not       not
  1067. Since
  1068. If-None-Match    not       not
  1069. If-Range         not       not
  1070. If-Unmodified-   not       not
  1071. Since
  1072. Max-Forwards     not       not
  1073. Proxy-           must-if   not     per RFC 2068. A client MUST send
  1074. Authorization                      this header when it receives a
  1075.                                    401 "Unauthorized" response and a
  1076.                                    "Proxy-Authenticate" header.
  1077. Range            not       not
  1078. Referer          not       not
  1079. User-Agent       not       not
  1080.  
  1081. 4.3 Response Headers
  1082.  
  1083. The following is a table for the request headers.
  1084.  
  1085.  
  1086. Response-      Server  Client   Response Values and Conditions
  1087. Header
  1088.  
  1089. Accept-Ranges  not     not
  1090. Age            not     not
  1091. Location       must-if may      per RFC 2068. When URI needs
  1092.                                 redirection.
  1093. Proxy-         not     must     per RFC 2068
  1094. Authenticate
  1095. Public         may     may      per RFC 2068
  1096. Retry-After    may     may      per RFC 2068
  1097. Server         not     not
  1098. Vary           not     not
  1099. Warning        may     may      per RFC 2068
  1100. WWW-           must-if must     per RFC 2068. When a server needs to
  1101. Authenticate                    authenticate a client.
  1102.  
  1103. 4.4 Entity  Headers
  1104.  
  1105. The following is a table for the entity headers.
  1106.  
  1107.  
  1108. Entity-Header  Request         Response        Values and Conditions
  1109.  
  1110.  
  1111.                Client  Server  Server   Client
  1112.  
  1113. Allow          not     not     not      not
  1114.  
  1115. Herriot, Butler,           October 23, 1997,                  [Page 18]
  1116. Moore and Turner         Expires April 23, 1998
  1117.  
  1118.  
  1119. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1120.  
  1121.  
  1122.  
  1123. Entity-Header  Request         Response        Values and Conditions
  1124.  
  1125.  
  1126.                Client  Server  Server   Client
  1127.  
  1128. Content-Base   not     not     not      not
  1129. Content-       may     must    must     must   per RFC 2068 and IANA
  1130. Encoding                                       registry for content
  1131.                                                codings.
  1132. Content-       not     not     not      not    Application/ipp
  1133. Language                                       handles language
  1134. Content-       must-if must    must-if  must   the length of the
  1135. Length                                         message-body per RFC
  1136.                                                2068. Header MUST be
  1137.                                                present if Transfer-
  1138.                                                Encoding is absent..
  1139. Content-       not     not     not      not
  1140. Location
  1141. Content-MD5    may     may     may      may    per RFC 2068
  1142. Content-Range  not     not     not      not
  1143. Content-Type   must    must    must     must   "application/ipp"
  1144.                                                only
  1145. ETag           not     not     not      not
  1146. Expires        not     not     not      not
  1147. Last-Modified  not     not     not      not
  1148.  
  1149. 5. Security Considerations
  1150.  
  1151. When utilizing HTTP 1.1 as a transport of IPP, the security
  1152. considerations outlined in RFC 2068 [r2068] apply.  Specifically, IPP
  1153. servers can generate a 401 "Unauthorized" response code to request
  1154. client authentication and IPP clients should correctly respond with the
  1155. proper "Authorization" header.  Both Basic Authentication (RFC 2068) and
  1156. Digest Authentication (RFC 2069) [r2069] flavors of authentication SHALL
  1157. be supported.  The server chooses which type(s) of authentication to
  1158. accept.  Digest Authentication is a more secure method, and is always
  1159. preferred to Basic Authentication.
  1160.  
  1161. For secure communication (privacy in particular), IPP SHOULD be run
  1162. using a secure communications channel. For this purpose it is the
  1163. intention to define standardization of IPP in combination with Transport
  1164. Layer Security (TLS), currently under development in the IETF, when the
  1165. TLS specifications are agreed and on the IETF standards track.
  1166.  
  1167. As an intercept solution for secure communication, the Secure Socket
  1168. Layer 3.0  (SSL3) could be used, but be warned that such implementations
  1169. may not be able to interoperate with a future standardized IPP and TLS
  1170. solution.  Appendix C gives some hints to implementors wanting to use
  1171. SSL3 as intercept solution.
  1172.  
  1173. It is possible to combine the techniques, HTTP 1.1 client authentication
  1174. (either basic or digest) with a secure communications channel.  Together
  1175.  
  1176.  
  1177. Herriot, Butler,           October 23, 1997,                  [Page 19]
  1178. Moore and Turner         Expires April 23, 1998
  1179.  
  1180.  
  1181. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1182.  
  1183.  
  1184. the two are more secure than client authentication and they perform user
  1185. authentication.
  1186.  
  1187. See further discussion of IPP security concepts in the model document
  1188. [ipp-m].
  1189.  
  1190.  
  1191. 6. References
  1192.  
  1193. [822]     Crocker, D., "Standard for the Format of ARPA Internet Text
  1194.      Messages", RFC 822, August 1982.
  1195.  
  1196. [r1123]   Braden, S., "Requirements for Internet Hosts - Application and
  1197.      Support", RFC 1123, October, 1989,
  1198.  
  1199. [r1179]   McLaughlin, L. III, (editor), "Line Printer Daemon Protocol"
  1200.      RFC 1179, August 1990.
  1201.  
  1202. [r1630]   T. Berners-Lee, "Universal Resource Identifiers in WWW: A
  1203.      Unifying Syntax for the Expression of  Names and Addresses of
  1204.      Objects on the Network as used in the Word-Wide Web", RFC 1630,
  1205.      June 1994.
  1206.  
  1207. [r1759]   Smith, R., Wright, F., Hastings, T., Zilles, S., and
  1208.      Gyllenskog, J., "Printer MIB", RFC 1759, March 1995.
  1209.  
  1210. [r1738]   Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform
  1211.      Resource Locators (URL)", RFC 1738, December, 1994.
  1212.  
  1213. [r1543]   Postel, J., "Instructions to RFC Authors", RFC 1543, October
  1214.      1993.
  1215.  
  1216. [r1766]   H. Alvestrand, " Tags for the Identification of Languages",
  1217.      RFC 1766, March 1995.
  1218.  
  1219. [r1903}   J. Case, et al. "Textual Conventions for Version 2 of the
  1220.      Simple Network Managment Protocol (SNMPv2)", RFC 1903, January
  1221.      1996.
  1222.  
  1223. [r2046]   N. Freed & N. Borenstein, Multipurpose Internet Mail
  1224.      Extensions (MIME) Part Two: Media Types. November 1996. (Obsoletes
  1225.      RFC1521, RFC1522, RFC1590), RFC 2046.
  1226.  
  1227. [r2048]   N. Freed, J. Klensin & J. Postel.  Multipurpose Internet Mail
  1228.      Extension (MIME) Part Four: Registration Procedures. November 1996.
  1229.      (Format: TXT=45033 bytes) (Obsoletes RFC1521, RFC1522, RFC1590)
  1230.      (Also BCP0013), RFC 2048.
  1231.  
  1232. [r2068]   R Fielding, et al, "Hypertext Transfer Protocol " HTTP/1.1"
  1233.      RFC 2068, January 1997
  1234.  
  1235. [r2069]   J. Franks, et al, "An Extension to HTTP: Digest Access
  1236.      Authentication" RFC 2069, January 1997
  1237.  
  1238.  
  1239. Herriot, Butler,           October 23, 1997,                  [Page 20]
  1240. Moore and Turner         Expires April 23, 1998
  1241.  
  1242.  
  1243. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1244.  
  1245.  
  1246. [r2119]   S. Bradner, "Key words for use in RFCs to Indicate Requirement
  1247.      Levels", RFC 2119 , March 1997
  1248.  
  1249. [r2184]   N. Freed, K. Moore, "MIME Parameter Value and Encoded Word
  1250.      Extensions: Character Sets, Languages, and Continuations", RFC
  1251.      2184, August 1997,
  1252.  
  1253. [abnf]    D. Crocker et al., "Augmented BNF for Syntax Specifications:
  1254.      ABNF", draft-ietf-drums-abnf-04.txt.
  1255.  
  1256. [char]    N. Freed, J. Postel:  IANA CharSet Registration Procedures,
  1257.      Work in Progress (draft-freed-charset-reg-02.txt).
  1258.  
  1259. [dpa]     ISO/IEC 10175 Document Printing Application (DPA), June 1996.
  1260.  
  1261. [iana]    IANA Registry of Coded Character Sets:  ftp://ftp.isi.edu/in-
  1262.      notes/iana/assignments/character-sets
  1263.  
  1264. [ipp-r]   Wright, F. D., "Requirements for an Internet Printing
  1265.      Protocol:"
  1266.  
  1267. [ipp-m]   Isaacson, S, deBry, R, Hasting, T, Herriot, R, Powell, P,
  1268.      "Internet Printing Protocol/1.0: Model and Semantics"
  1269.  
  1270. [ssl]     Netscape, The SSL Protocol, Version 3, (Text version 3.02)
  1271. November 1996.
  1272.  
  1273.  
  1274. 7.        Author's Address
  1275.  
  1276.  
  1277. Robert Herriot (editor)             Paul Moore
  1278. Sun Microsystems Inc.               Microsoft
  1279. 901 San Antonio.Road, MPK-17        One Microsoft Way
  1280. Palo Alto, CA 94303                 Redmond, WA 98053
  1281.  
  1282. Phone: 650-786-8995                 Phone: 425-936-0908
  1283. Fax:  650-786-7077                  Fax: 425-93MS-FAX
  1284. Email: robert.herriot@eng.sun.com   Email: paulmo@microsoft.com
  1285.  
  1286. Sylvan Butler                       Randy Turner
  1287. Hewlett-Packard                     Sharp Laboratories
  1288. 11311 Chinden Blvd.                 5750 NW Pacific Rim Blvd
  1289. Boise, ID 83714                     Camas, WA 98607
  1290.  
  1291. Phone: 208-396-6000                 Phone: 360-817-8456
  1292. Fax:  208-396-3457                  Fax: : 360-817-8436
  1293. Email: sbutler@boi.hp.com           Email: rturner@sharplabs.com
  1294.  
  1295.  
  1296. IPP Mailing List:  ipp@pwg.org
  1297. IPP Mailing List Subscription:  ipp-request@pwg.org
  1298. IPP Web Page:  http://www.pwg.org/ipp/
  1299.  
  1300.  
  1301. Herriot, Butler,           October 23, 1997,                  [Page 21]
  1302. Moore and Turner         Expires April 23, 1998
  1303.  
  1304.  
  1305. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1306.  
  1307.  
  1308. 8. Other Participants:
  1309.  
  1310. Chuck Adams - Tektronix             Harry Lewis - IBM
  1311. Ron Bergman - Data Products         Tony Liao - Vivid Image
  1312. Keith Carter - IBM                  David Manchala - Xerox
  1313. Angelo Caruso - Xerox               Carl-Uno Manros - Xerox
  1314. Jeff Copeland - QMS                 Jay Martin - Underscore
  1315. Roger Debry - IBM                   Larry Masinter - Xerox
  1316. Lee Farrell - Canon                 Bob Pentecost - Hewlett-Packard
  1317. Sue Gleeson - Digital               Patrick Powell - SDSU
  1318. Charles Gordon - Osicom             Jeff Rackowitz - Intermec
  1319. Brian Grimshaw - Apple              Xavier Riley - Xerox
  1320. Jerry Hadsell - IBM                 Gary Roberts - Ricoh
  1321. Richard Hart - Digital              Stuart Rowley - Kyocera
  1322. Tom Hastings - Xerox                Richard Schneider - Epson
  1323. Stephen Holmstead                   Shigern Ueda - Canon
  1324. Zhi-Hong Huang - Zenographics       Bob Von Andel - Allegro Software
  1325. Scott Isaacson - Novell             William Wagner - Digital Products
  1326. Rich Lomicka - Digital              Jasper Wong - Xionics
  1327. David Kellerman - Northlake         Don Wright - Lexmark
  1328. Software
  1329. Robert Kline - TrueSpectra          Rick Yardumian - Xerox
  1330. Dave Kuntz - Hewlett-Packard        Lloyd Young - Lexmark
  1331. Takami Kurono - Brother             Peter Zehler - Xerox
  1332. Rich Landau - Digital               Frank Zhao - Panasonic
  1333. Greg LeClair - Epson                Steve Zilles - Adobe
  1334.  
  1335. 9. Appendix A: Protocol Examples
  1336.  
  1337.  
  1338. 9.1 Print-Job Request
  1339.  
  1340. The following is an example of a Print-Job request with job-name,
  1341. copies, and sides specified.
  1342.  
  1343.  
  1344. Octets                Symbolic Value       Protocol field
  1345.  
  1346. 0x0100                1.0                  version
  1347. 0x0002                PrintJob             operation
  1348. 0x01                  start operation-     operation-attributes tag
  1349.                       attributes
  1350. 0x47                  charset type         value-tag
  1351. 0x0012                                     name-length
  1352. attributes-charset    attributes-charset   name
  1353. 0x0008                                     value-length
  1354. US-ASCII              US-ASCII             value
  1355. 0x48                  natural-language     value-tag
  1356.                       type
  1357. 0x001B                                     name-length
  1358. attributes-natural-   attributes-natural-  name
  1359. language              language
  1360. 0x0005                                     value-length
  1361. en-US                 en-US                value
  1362.  
  1363. Herriot, Butler,           October 23, 1997,                  [Page 22]
  1364. Moore and Turner         Expires April 23, 1998
  1365.  
  1366.  
  1367. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1368.  
  1369.  
  1370.  
  1371. Octets                Symbolic Value       Protocol field
  1372.  
  1373. 0x42                  name type            value-tag
  1374. 0x0008                                     name-length
  1375. job-name              job-name             name
  1376. 0x0006                                     value-length
  1377. foobar                foobar               value
  1378. 0x02                  start job-           job-attributes tag
  1379.                       attributes
  1380. 0x21                  integer type         value-tag
  1381. 0x0005                                     name-length
  1382. copies                copies               name
  1383. 0x0004                                     value-length
  1384. 0x00000014            20                   value
  1385. 0x44                  keyword type         value-tag
  1386. 0x0005                                     name-length
  1387. sides                 sides                name
  1388. 0x0013                                     value-length
  1389. two-sided-long-edge   two-sided-long-edge  value
  1390. 0x03                  start-data           data-tag
  1391. %!PS...               <PostScript>         data
  1392.  
  1393. 9.2 Print-Job Response (successful)
  1394.  
  1395. Here is an example of a Print-Job response which is successful:
  1396.  
  1397.  
  1398. Octets           Symbolic Value   Protocol field
  1399.  
  1400. 0x0100           1.0              version
  1401. 0x0000           OK (successful)  status-code
  1402. 0x01             start operation- operation-attributes tag
  1403.                  attributes
  1404. 0x47             charset type     value-tag
  1405. 0x0012                            name-length
  1406. attributes-      attributes-      name
  1407. charset          charset
  1408. 0x0008                            value-length
  1409. US-ASCII         US-ASCII         value
  1410. 0x48             natural-language value-tag
  1411.                  type
  1412. 0x001B                            name-length
  1413. attributes-      attributes-      name
  1414. natural-         natural-language
  1415. language
  1416. 0x0005                            value-length
  1417. en-US            en-US            value
  1418. 0x41             text type        value-tag
  1419. 0x000E                            name-length
  1420. status-message   status-message   name
  1421. 0x0002                            value-length
  1422. OK               OK               value
  1423. 0x02             start job-       job-attributes tag
  1424.  
  1425. Herriot, Butler,           October 23, 1997,                  [Page 23]
  1426. Moore and Turner         Expires April 23, 1998
  1427.  
  1428.  
  1429. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1430.  
  1431.  
  1432.  
  1433. Octets           Symbolic Value   Protocol field
  1434.  
  1435.                  attributes
  1436. 0x21             integer          value-tag
  1437. 0x0007                            name-length
  1438. job-id           job-id           name
  1439. 0x0004                            value-length
  1440. 147              147              value
  1441. 0x45             uri type         value-tag
  1442. 0x0008                            name-length
  1443. job-uri          job-uri          name
  1444. 0x000E                            value-length
  1445. http://foo/123   http://foo/123   value
  1446. 0x25             name type        value-tag
  1447. 0x0008                            name-length
  1448. job-state        job-state        name
  1449. 0x0001                            value-length
  1450. 0x03             pending          value
  1451. 0x03             start-data       data-tag
  1452.  
  1453. 9.3 Print-Job Response (failure)
  1454.  
  1455. Here is an example of a Print-Job response which fails because the
  1456. printer does not support sides and because the value 20 for copies is
  1457. not supported:
  1458.  
  1459.  
  1460. Octets           Symbolic Value           Protocol field
  1461.  
  1462. 0x0100           1.0                      version
  1463. 0x0400           client-error-bad-request status-code
  1464. 0x01             start operation-         operation-attribute tag
  1465.                  attribures
  1466. 0x47             charset type             value-tag
  1467. 0x0012                                    name-length
  1468. attributes-      attributes-charset       name
  1469. charset
  1470. 0x0008                                    value-length
  1471. US-ASCII         US-ASCII                 value
  1472. 0x48             natural-language type    value-tag
  1473. 0x001B                                    name-length
  1474. attributes-      attributes-natural-      name
  1475. natural-         language
  1476. language
  1477. 0x0005                                    value-length
  1478. en-US            en-US                    value
  1479. 0x41             text type                value-tag
  1480. 0x000E                                    name-length
  1481. status-message   status-message           name
  1482. 0x000D                                    value-length
  1483. bad-request      bad-request              value
  1484. 0x04             start unsupported-job-   unsupported-job-
  1485.                  attributes               attributes tag
  1486.  
  1487. Herriot, Butler,           October 23, 1997,                  [Page 24]
  1488. Moore and Turner         Expires April 23, 1998
  1489.  
  1490.  
  1491. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1492.  
  1493.  
  1494.  
  1495. Octets           Symbolic Value           Protocol field
  1496.  
  1497. 0x21             integer type             value-tag
  1498. 0x0005                                    name-length
  1499. copies           copies                   name
  1500. 0x0004                                    value-length
  1501. 0x00000014       20                       value
  1502. 0x10             unsupported  (type)      value-tag
  1503. 0x0005                                    name-length
  1504. sides            sides                    name
  1505. 0x0000                                    value-length
  1506. 0x03             start-data               data-tag
  1507.  
  1508. 9.4 Print-URI Request
  1509.  
  1510. The following is an example of Print-URI request with copies and job-
  1511. name parameters.
  1512.  
  1513. Octets              Symbolic Value      Protocol field
  1514. 0x0100              1.0                 version
  1515. 0x0003              Print-URI           operation
  1516. 0x01                start operation-    operation-attributes tag
  1517.                     attributes
  1518. 0x47                charset type        value-tag
  1519. 0x0012                                  name-length
  1520. attributes-charset  attributes-charset  name
  1521. 0x0008                                  value-length
  1522. US-ASCII            US-ASCII            value
  1523. 0x48                natural-language    value-tag
  1524.                     type
  1525. 0x001B                                  name-length
  1526. attributes-natural- attributes-         name
  1527. language            natural-language
  1528. 0x0005                                  value-length
  1529. en-US               en-US               value
  1530. 0x45                uri type            value-tag
  1531. 0x000A                                  name-length
  1532. document-uri        document-uri        name
  1533. 0x11                                    value-length
  1534. ftp://foo.com/foo   ftp://foo.com/foo   value
  1535. 0x42                name type           value-tag
  1536. 0x0008                                  name-length
  1537. job-name            job-name            name
  1538. 0x0006                                  value-length
  1539. foobar              foobar              value
  1540. 0x02                start job-          job-attributes tag
  1541.                     attributes
  1542. 0x21                integer type        value-tag
  1543. 0x0005                                  name-length
  1544. copies              copies              name
  1545. 0x0004                                  value-length
  1546. 0x00000001          1                   value
  1547. 0x03                start-data          data-tag
  1548.  
  1549. Herriot, Butler,           October 23, 1997,                  [Page 25]
  1550. Moore and Turner         Expires April 23, 1998
  1551.  
  1552.  
  1553. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1554.  
  1555.  
  1556. Octets              Symbolic Value      Protocol field
  1557. %!PS...             <PostScript>        data
  1558.  
  1559. 9.5 Create-Job Request
  1560.  
  1561. The following is an example of Create-Job request with no parameters and
  1562. no attributes
  1563.  
  1564. Octets       Symbolic    Protocol field
  1565.              Value
  1566. 0x0100       1.0         version
  1567. 0x0005       Create-Job  operation
  1568. 0x03         start-data  data-tag
  1569.  
  1570. 9.6 Get-Jobs Request
  1571.  
  1572. The following is an example of Get-Jobs request with parameters but no
  1573. attributes.
  1574.  
  1575. Octets                Symbolic Value       Protocol field
  1576. 0x0100                1.0                  version
  1577. 0x000A                Get-Jobs             operation
  1578. 0x01                  start operation-     operation-attributes-
  1579.                       attributes           tag
  1580. 0x47                  charset type         value-tag
  1581. 0x0012                                     name-length
  1582. attributes-charset    attributes-charset   name
  1583. 0x0008                                     value-length
  1584. US-ASCII              US-ASCII             value
  1585. 0x48                  natural-language     value-tag
  1586.                       type
  1587. 0x001B                                     name-length
  1588. attributes-natural-   attributes-natural-  name
  1589. language              language
  1590. 0x0005                                     value-length
  1591. en-US                 en-US                value
  1592. 0x21                  integer type         value-tag
  1593. 0x0005                                     name-length
  1594. limit                 limit                name
  1595. 0x0004                                     value-length
  1596. 0x00000032            50                   value
  1597. 0x44                  keyword type         value-tag
  1598. 0x0014                                     name-length
  1599. requested-attributes  requested-attributes name
  1600. 0x0006                                     value-length
  1601. job-id                job-id               value
  1602. 0x44                  keyword type         value-tag
  1603. 0x0000                additional value     name-length
  1604. 0x0008                                     value-length
  1605. job-name              job-name             value
  1606. 0x03                  start-data           data-tag
  1607.  
  1608.  
  1609.  
  1610.  
  1611. Herriot, Butler,           October 23, 1997,                  [Page 26]
  1612. Moore and Turner         Expires April 23, 1998
  1613.  
  1614.  
  1615. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1616.  
  1617.  
  1618. 9.7 Get-Jobs Response
  1619.  
  1620. The following is an of Get-Jobs response from previous request with 3
  1621. jobs. The Printer returns no information about the second job.
  1622.  
  1623. Octets            Symbolic Value        Protocol field
  1624. 0x0100            1.0                   version
  1625. 0x0000            OK (successful)       status-code
  1626. 0x01              start operation-      operation-attribute-tag
  1627.                   attributes
  1628. 0x47              charset type          value-tag
  1629. 0x0012                                  name-length
  1630. attributes-       attributes-charset    name
  1631. charset
  1632. 0x0008                                  value-length
  1633. ISO-8859-1        ISO-8859-1            value
  1634. 0x48              natural-language      value-tag
  1635.                   type
  1636. 0x001B                                  name-length
  1637. attributes-       attributes-natural-   name
  1638. natural-language  language
  1639. 0x0005                                  value-length
  1640. en-US             en-US                 value
  1641. 0x41              text type             value-tag
  1642. 0x000E                                  name-length
  1643. status-message    status-message        name
  1644. 0x0002                                  value-length
  1645. OK                OK                    value
  1646. 0x02              start job-attributes  job-attributes-tag
  1647.                   (1st  object)
  1648. 0x48              natural-language      value-tag
  1649.                   type
  1650. 0x001B                                  name-length
  1651. attributes-       attributes-natural-   name
  1652. natural-language  language
  1653. 0x0005                                  value-length
  1654. fr-CA             fr-CA                 value
  1655. 0x21              integer type          value-tag
  1656. 0x0006                                  name-length
  1657. job-id            job-id                name
  1658. 0x0004                                  value-length
  1659. 147               147                   value
  1660. 0x42              name type             value-tag
  1661. 0x0008                                  name-length
  1662. job-name          job-name              name
  1663. 0x0003                                  name-length
  1664. fou               fou                   name
  1665. 0x02              start job-attributes  job-attributes-tag
  1666.                   (2nd object)
  1667. 0x02              start job-attributes  job-attributes-tag
  1668.                   (3rd object)
  1669. 0x21              interger type         value-tag
  1670. 0x0006                                  name-length
  1671. job-id            job-id                name
  1672.  
  1673. Herriot, Butler,           October 23, 1997,                  [Page 27]
  1674. Moore and Turner         Expires April 23, 1998
  1675.  
  1676.  
  1677. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1678.  
  1679.  
  1680. Octets            Symbolic Value        Protocol field
  1681. 0x0004                                  value-length
  1682. 148               148                   value
  1683. 0x13              compoundValue         value-tag
  1684. 0x0008                                  name-length
  1685. job-name          job-name              name
  1686. 0x0004                                  value-length
  1687. 0x0002            2                     value (number of values)
  1688. 0x48              naturalLanguage       value-tag
  1689. 0x0000            muli-value marker     name-length
  1690. 0x0005                                  value-length
  1691. de-CH             de-CH                 value
  1692. 0x42              name type             value-tag
  1693. 0x0000            muli-value marker     name-length
  1694. 0x0003                                  name-length
  1695. bar               bar                   name
  1696. 0x03              start-data            data-tag
  1697.  
  1698. 10. Appendix B: Mapping of Each Operation in the Encoding
  1699.  
  1700. The next three tables show the results of applying the rules above to
  1701. the operations defined in the IPP model document. There is no
  1702. information in these tables that cannot be derived from the rules
  1703. presented in Section 3.8 "Mapping of Attribute  Names".
  1704.  
  1705. The following table shows the mapping of all IPP model-document request
  1706. attributes to an appropriate xxx-attribute-sequence  or special position
  1707. in the protocol.
  1708.  
  1709. The table below shows the attributes for operations sent to a Printer
  1710. URI.
  1711.  
  1712.  
  1713. Operation        operation       job attributes  special position
  1714.                  attributes
  1715.  
  1716. Print-Job        attributes-     job-template    document-content
  1717.                  charset         attributes
  1718.                  attributes-
  1719.                  natural-
  1720.                  language
  1721.                  job-name
  1722.                  document-name
  1723.                  ipp-attribute-
  1724.                  fidelity
  1725.                  document-
  1726.                  charset
  1727.                  document-
  1728.                  natural-
  1729.                  language
  1730. Create-Job or    attributes-     job-template
  1731. Validate-Job     charset         attributes
  1732.                  attributes-
  1733.                  natural-
  1734.  
  1735. Herriot, Butler,           October 23, 1997,                  [Page 28]
  1736. Moore and Turner         Expires April 23, 1998
  1737.  
  1738.  
  1739. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1740.  
  1741.  
  1742.  
  1743. Operation        operation       job attributes  special position
  1744.                  attributes
  1745.  
  1746.                  language job-
  1747.                  name
  1748.                  ipp-attribute-
  1749.                  fidelity
  1750. Print-URI        attributes-     job-template
  1751.                  charset         attributes
  1752.                  attributes-
  1753.                  natural-
  1754.                  language job-
  1755.                  name
  1756.                  ipp-attribute-
  1757.                  fidelity
  1758.                  document-uri
  1759.                  document-
  1760.                  charset
  1761.                  document-
  1762.                  natural-
  1763.                  language
  1764. Send-Document    attributes-
  1765.                  charset
  1766.                  attributes-
  1767.                  natural-
  1768.                  language job-id
  1769.                  last-document
  1770.                  document-name
  1771.                  document-
  1772.                  charset
  1773.                  document-
  1774.                  natural-                                                        document-content
  1775.                  language
  1776. Send-URI         attributes-
  1777.                  charset
  1778.                  attributes-
  1779.                  natural-
  1780.                  language job-id
  1781.                  last-document
  1782.                  document-name
  1783.                  document-uri
  1784.                  document-
  1785.                  charset
  1786.                  document-
  1787.                  natural-
  1788.                  language
  1789. Cancel-Job       attributes-
  1790.                  charset
  1791.                  attributes-
  1792.                  natural-
  1793.                  language job-id
  1794.                  message
  1795. Get-Attributes   attributes-
  1796.  
  1797. Herriot, Butler,           October 23, 1997,                  [Page 29]
  1798. Moore and Turner         Expires April 23, 1998
  1799.  
  1800.  
  1801. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1802.  
  1803.  
  1804.  
  1805. Operation        operation       job attributes  special position
  1806.                  attributes
  1807.  
  1808. (for a Printer)  charset
  1809.                  attributes-
  1810.                  natural-
  1811.                  language
  1812.                  requested-
  1813.                  attributes
  1814.                  document-format
  1815. Get-Attributes   attributes-
  1816. (for a Job)      charset
  1817.                  attributes-
  1818.                  natural-
  1819.                  language job-id
  1820.                  requested-
  1821.                  attributes
  1822. Get-Jobs         attributes-
  1823.                  charset
  1824.                  attributes-
  1825.                  natural-
  1826.                  language limit
  1827.                  requested-
  1828.                  attributes
  1829.                  which-jobs
  1830.  
  1831. The table below shows the attributes for operations sent to a Job URI.
  1832.  
  1833.  
  1834. Operation        operation       job attributes  special position
  1835.                  attributes
  1836.  
  1837. Send-Document    attributes-                     document-content
  1838.                  charset
  1839.                  attributes-
  1840.                  natural-
  1841.                  language last-
  1842.                  document
  1843.                  document-name
  1844.                  document-
  1845.                  charset
  1846.                  document-
  1847.                  natural-
  1848.                  language
  1849. Send-URI         attributes-
  1850.                  charset
  1851.                  attributes-
  1852.                  natural-
  1853.                  language last-
  1854.                  document
  1855.                  document-name
  1856.                  document-uri
  1857.                  document-
  1858.  
  1859. Herriot, Butler,           October 23, 1997,                  [Page 30]
  1860. Moore and Turner         Expires April 23, 1998
  1861.  
  1862.  
  1863. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1864.  
  1865.  
  1866.  
  1867. Operation        operation       job attributes  special position
  1868.                  attributes
  1869.  
  1870.                  charset
  1871.                  document-
  1872.                  natural-
  1873.                  language
  1874. Cancel-Job       attributes-
  1875.                  charset
  1876.                  attributes-
  1877.                  natural-
  1878.                  language
  1879.                  message
  1880. Get-Attributes   attributes-
  1881. (for a Job)      charset
  1882.                  attributes-
  1883.                  natural-
  1884.                  language
  1885.                  requested-
  1886.                  attributes
  1887.  
  1888. The following two tables shows the mapping of all IPP model-document
  1889. response attributes to an appropriate xxx-attribute-sequence or special
  1890. position in the protocol.
  1891.  
  1892.  
  1893. Operation      operation     job-         unsupported-job-   special
  1894.                attributes    attributes   attributes         position
  1895.  
  1896. Print-Job,     attributes-   job-id       unsupported        status-
  1897. Print-URI,     charset       job-uri      attributes         code
  1898. Create-Job,    attributes-    job-state
  1899. Send-Document  natural-      job-state-
  1900. or Send-URI    language      reasons
  1901.                status-       job-state-
  1902.                message       message
  1903.                              number-of-
  1904.                              intervening
  1905.                              -jobs
  1906.  
  1907. Validate-Job   attributes-                unsupported        status-
  1908.                charset                    attributes         code
  1909.                attributes-
  1910.                natural-
  1911.                language
  1912.                status-
  1913.                message
  1914.  
  1915.  
  1916. Note: the unsupported-job-attributes are present only if the client
  1917. included some job attributes that the Printer doesn't support.
  1918.  
  1919.  
  1920.  
  1921. Herriot, Butler,           October 23, 1997,                  [Page 31]
  1922. Moore and Turner         Expires April 23, 1998
  1923.  
  1924.  
  1925. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1926.  
  1927.  
  1928. Note:  the job-attributes are present only if the server returns the
  1929. status code of successful-ok or successful-ok-ignored-or-substituted-
  1930. attributes.
  1931.  
  1932.  
  1933. Operation      operation     job-         printer-      special
  1934.                attributes    attributes   attributes    position
  1935.  
  1936. Cancel-Job     attributes-
  1937.                charset
  1938.                attributes-
  1939.                natural-
  1940.                language
  1941.                status-                                                               status-code
  1942.                message
  1943.  
  1944. Get-Attributes attributes-   requested                  status-code
  1945. (of a job)     charset       attributes
  1946.                attributes-
  1947.                natural-
  1948.                language
  1949.                status-
  1950.                message
  1951.  
  1952. Get-Attributes attributes-                requested     status-code
  1953. (of a printer) charset                    attributes
  1954.                attributes-
  1955.                natural-
  1956.                language
  1957.                status-
  1958.                message
  1959.  
  1960. Get-Jobs       attributes-   requested                  status-code
  1961.                charset       attributes
  1962.                attributes-   (see the
  1963.                natural-      Note below)
  1964.                language
  1965.                status-
  1966.                message
  1967.  
  1968.  
  1969. Note for Get-Jobs: there is a separate job-attribute-sequence containing
  1970. requested-attributes for each job object in the response
  1971.  
  1972.  
  1973. 11. Appendix C: Hints to implementors using IPP with SSL3
  1974.  
  1975. WARNING: Clients and IPP objects using intermediate secure connection
  1976. protocol solutions such as IPP in combination with Secure Socket Layer
  1977. Version 3 (SSL3), which are developed in advance of IPP and TLS
  1978. standardization, might not be interoperable with IPP and TLS standards-
  1979. conforming clients and IPP objects.
  1980.  
  1981.  
  1982.  
  1983. Herriot, Butler,           October 23, 1997,                  [Page 32]
  1984. Moore and Turner         Expires April 23, 1998
  1985.  
  1986.  
  1987. INTERNET-DRAFT      IPP/1.0: Protocol Specification    October 23, 1997
  1988.  
  1989.  
  1990. An assumption is that the URI for a secure IPP Printer object has been
  1991. found by means outside the IPP printing protocol, via a directory
  1992. service, web site or other means.
  1993.  
  1994. IPP provides a transparent connection to SSL by calling the
  1995. corresponding URL (a https URI connects by default to port 443).
  1996. However, the following functions can be provided to ease the integration
  1997. of IPP with SSL during implementation.
  1998.  
  1999. connect (URI), returns a status.
  2000.  
  2001.   "connect" makes an https call and returns the immediate status of
  2002.   the connection as returned by SSL to the user. The status values are
  2003.   explained in section 5.4.2 of the SSL document [ssl].
  2004.  
  2005.   A session-id may also be retained to later resume a session.  The SSL
  2006.   handshake protocol may also require the cipher specifications
  2007.   supported by the client, key length of the ciphers, compression
  2008.   methods, certificates, etc. These should  be sent to the server and
  2009.   hence should be available to the IPP client (although as part of
  2010.   administration features).
  2011.  
  2012. disconnect (session)
  2013.  
  2014.   to disconnect a particular session.
  2015.  
  2016.   The session-id available from the "connect" could be used.
  2017.  
  2018. resume (session)
  2019.  
  2020.   to reconnect using a previous session-id.
  2021.  
  2022. The availability of this information as administration features are left
  2023. for implementors, and need not be standardized at this time
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045. Herriot, Butler,           October 23, 1997,                  [Page 33]
  2046. Moore and Turner         Expires April 23, 1998
  2047.