Since Bob's document is so small, and since folks should want to
see this asap, I have attached the text form of the document below.
It's not terribly readable in this form (Bob also has a Word .doc
file available), but it should give some folks an idea of what's
going on. I've done just a touch of reformatting so some mail
agents won't complain, etc.
...jay
----- Begin Included Message -----
Date: Mon, 16 Jun 1997 12:11:17 -0700
From: Robert.Herriot@Eng.Sun.COM (Robert Herriot)
To: ipp@pwg.org
Subject: IPP>PRO Enclosed: Update to Randy's document
Because the pwg server is down today, I have enclosed the MS Word and text
version of the files that I downloaded on Friday.
This document will be part of tomorrow's discussions.
Bob Herriot
----- End Included Message -----
------------------------------------------------------------------------------
INTERNET-DRAFT
HTTP 1.1 Transport Mapping for the Internet Printing Protocol
Missing parts
When Randy wrote the protocol document, he changed to syntax from the
binary version that we had previously agreed to. I expected the old
version to be in the document as an alternate solution, but it is not.
I am including it here. The following protocol primitives are
defined:
DIGIT = "0".."9"
ALPHA = "A..Z"
BYTE = %d0..%d255
OCTET-STRING = *BYTE
The following ABNF specification describes the encoding of an IPP
message (PDU): (We may want to state that string values are case
sensitive, unlike what ABNF says).
operation-encoding = operation-version operation operation-data
operation-version = operation-major-version operation-minor-version
operation-major-version = %x00..%x7F ; major version in binary, initially 1
operation-minor-version = %x00..%x7F ; minor version in binary, initially 0
operation = operation-length operator *operand
operation-length = %x00.00.00.00 .. %x7f.ff.ff.ff ; number of octets for the operation in binary
operator = %d0.9 "operation" value-length value
operand = name-length name value-length value
name-length = %x00.00..%x7f.ff ; number of octets of the name in binary
name = = ALPHA *( ALPHA / DIGIT / "_" / "-" )
value-length = %x00.00..%x7f.ff; number of octets of the name in binary
value = OCTET-STRING
operation-data = OCTET-STRING
The following is a picture of this encoding:
[Diagram not available in the text version]
The transport encoding in Randy's Appendix A references syntax items
that aren't in his document. Here is the new version of the transport
encoding for raw TCP/IP that reference items in the
operation-encoding.
The idea behind this is that the transport encoding does the work of
HTTP. It encodes HTTP header information in the transport-operands. It
encodes the application/ipp entity body in the transport-operation by
breaking it into chunks.
transport-encoding = transport-version XID transport-operands transport-operation
transport-version = transport-major-version transport-minor-version
transport-major-version = %x00..%x7F; major version in binary, initially 1
transport-minor-version = %x00..%x7F; minor version in binary, initially 0
XID = %x00.00.00.00 .. %x7f.ff.ff.ff ; transaction id in binary
transport-operands = operand-length *operand
operand-length = %x00.00.00.00 .. %x7f.ff.ff.ff ; number of octets for the operands in binary
transport-operation = 1*transport-chunk ; the chunked operation-encoding data
transport-chunk = transport-data-length transport-data
transport-data-length = %x00.00.00.00 .. %x7f.ff.ff.ff ; number of octets of the data in binary
transport-data = OCTET-STRING
The following is a picture of the transport encoding:
[Diagram not available in the text version]