Protocol Changes (was: Zoom / Scaling in VNC)
cjsmith@btinternet.com
cjsmith "at" btinternet.com
Tue, 21 Mar 2000 12:10:48 +0000
Hi!
Seeing as I started off this thread, I thought I'd chuck in my 2p.
I feel that a protocol V4 using text descriptors to negotiate capabilities at
startup and a length field in each message are extremely important. Here are
a few additional comments to throw into the mix:
1) Text descriptors will allow user-defined or global extensions to be added
to the protocol very easily. Numeric / bitmask fields almost always result in
major compatibility issues when you have a number of independent developers
wanting to modify/extend the protocol. For efficiency, each message/encoding
should be dynamically assigned a number for future use to reduce bandwidth (e.g.
a 16-bit field incremented by 1 for each type negotiated).
2) A message length field is very useful - this allows servers or clients to
skip unknown messages, or to log them for debugging purposes. At the moment,
the client or server MUST immediately terminate the connection if it gets an
unrecognised message. Similarly, if a buffer update is ever received in an unsupported
encoding, the connection dies. Again, it would be nice to be able to discard
the update, rather than immediately falling over. This may also allow us to
strip out the "padding" fields currently in the v3.3 protocol, and so would
reduce the total amount of data transmitted, despite the additional length field.
3) IIRC, the pixel formatting control is, at present, quite nasty - a SetPixelFormat
is assumed to immediately be acted on immediately. Any intermediate data may
be misinterpreted (see earlier comments regarding the proxy server). Similarly,
no verification of palletes etc. is supported. It would be nice if, for all
*control* messages, an ACK/NAK mechanism was in place. For *update* messages,
no ACK should be required, as this would place too high a latency on the protocol.
4) As a part of this, it would be good to remove as much as possible from the
hard-coded handshaking session at the start. If this functionality was moved
into a more general control message exchange, it would be possible to maintain
the connection when resolution/bit depth/scale etc. changes on either server
or client.
5) Even if it isn't implemented for now, support for sub-byte pixel widths should
be put into the protocol (1, 2, 4-bit). This will give a substantial performance
improvement for low-bandwidth connections, which I see as being a key area that
VNC protocol does not at present allow (hence scaling as well).
6) As mentioned previously, an official "v4.0" protocol will allow compatibility
with existing servers and clients. It would be quite easy to write a generic
protocol-converter that will translate v3.3 communications into v4.0 messages.
Okay, that went on for a little longer than I intended, but IMHO this is a very
worthwhile step to take to improve the VNC protocol.
Just my 2p,
Chris.
---------------------------------------------------------------------
To unsubscribe, send a message with the line: unsubscribe vnc-list
to majordomo "at" uk.research.att.com
See also: http://www.uk.research.att.com/vnc/intouch.html
---------------------------------------------------------------------