A Vision for Open Hypermedia Systems Nürnberg and Leggett

5.1 Generic Encoding Layer

The Generic Encoding (GE) Layer uses the services of the OSI Transport Layer, and thus may assume reliable ordered byte transport. This layer is responsible for mapping the abstractions of the Sproc Generic Layer to byte streams for the Transport Layer facilities.

For reasons that are explained in detail in Section 5.2, the Sproc Generic Layer uses structure object abstractions to send messages. A structure object has arbitrary content, arbitrary attribute/value pairs, and arbitrary endset/endpoint pairs. Attributes have an arbitrary number of NULL-terminated ASCII strings as values, while endsets have an arbitrary number of object identifiers as values. (The form of an object identifier is ignored here, as this is part of the naming issue discussed briefly in Section 3.2.4. For the purposes of this discussion, we treat identifiers as arbitrary byte blocks of arbitrary size.)

The central issue of this layer is how to encode or serialize these structural objects into byte streams. The current protocol proposal discusses analogous issues in Section 5.1 under "Form of the Protocol". It proposes that we encode messages into ASCII clear text. Clearly, other choices could be made at this level. For example, messages (or structural objects or whatever abstractions are used at the Sproc Generic Layer) could be mapped into arbitrary byte streams, compressed, encrypted, etc. The primary advantage of clear text seems to be that human beings can read and interpret it, making debugging or monitoring easier. The primary advantage of byte streams is that the amount of data sent may be smaller, since no encoding of arbitrary binary data into clear text need occur. Because of the range of choices available, this layer is represented as open in the protocol stack figure.

The choice here does not seem to have implications at either the higher or lower levels of the protocol. Furthermore, the differences between the various choices are not substantial. Clearly, they are equivalent in expressive power, and just as clearly, programmers will not normally need to concern themselves with the exact mechanics of this layer. We propose that the group adopt the clear text approach, as this is consonant with the current proposal. Alternatives include the current various binary packing approaches and BER standards [ISO 1990] for encoding to and from byte streams.

Because data translated into byte streams loses its structure, a header including the total number of bytes (not including the header) should be prepended to the byte stream given to the Transport Layer. Details concerning this size header and our proposal for encoding structural objects into byte streams are provided in Appendix A.

A protocol stack box diagram
Figure 10. Generic Encoding Layer of the OHP Protocol Stack.


Peter J. Nürnberg, John J. Leggett
HRL, CSDL, Texas A&M
original page URL: http://jodi.ecs.soton.ac.uk/Articles/v01/i02/Nurnberg/proto_enc.html