Header:
    Version = 2 bytes
    Operation/Status Code = 2 bytes
    Request ID = 4 bytes
            Total = 8 bytes

Attribute Group:
    Group Tag = 1 byte ( < IPP_TAG_UNSUPPORTED_VALUE)

    Attributes: 
        Value Tag   = 1 byte
      Name:
        Length    = 2 bytes
        Tag Name  = L bytes
        ( if length = 0, value is another of previous )

      Value:
        Length    = 2 bytes
        Tag = IPP_TAG_INTEGER, IPP_TAG_ENUM
            Integer = 4 bytes
        Tag = IPP_TAG_BOOLEAN
            Value   = 1 byte
        Tag = IPP_TAG_TEXT, IPP_TAG_NAME, IPP_TAG_KEYWORD, IPP_TAG_STRING, 
              IPP_TAG_URI, IPP_TAG_URISCHEME, IPP_TAG_CHARSET, 
              IPP_TAG_LANGUAGE, IPP_TAG_MIMETYPE :
            Tag Value = L bytes
        Tag = IPP_TAG_DATE
            Date = 11 bytes
        Tag = IPP_TAG_RESOLUTION
            xres = 4 bytes
            yres = 4 bytes
            units = 1 byte
        Tag = IPP_TAG_RANGE
            lower = 4 bytes
            upper = 4 bytes
        Tag = IPP_TAG_TEXTLANG, IPP_TAG_NAMELANG
            L       = 2 bytes
            charset = L bytes
            L       = 2 bytes
            text    = L bytes
        Tag = IPP_TAG_BEGIN_COLLECTION
            Recurse
        Tag = IPP_TAG_END_COLLECTION
            Pop
        Tag = IPP_TAG_MEMBERNAME
            The value the name of the member in the collection, which
            we need to carry over...
            name    = L bytes
        Other
            Unknown = L bytes

    IPP_TAG_END
