version request negotiates the protocol version and message size
to be used on the connection and initializes the connection for I/O.
Tversion must be the first message sent on the 9P connection,
and the client cannot issue any further requests until it has received the
tag should be
(ushort)~0) for a
The client suggests a maximum message size,
msize, that is the maximum length, in bytes,
it will ever generate or expect to receive in a single 9P message.
This count includes all 9P protocol data, starting from the
size field and extending through the message,
but excludes enveloping transport protocols.
The server responds with its own maximum,
msize, which must be less than or equal to the clients value.
Thenceforth, both sides of the connection must honor this limit.
version string identifies the level of the protocol.
The string must always begin with the two characters
9P. If the server does not understand the clients version string,
it should respond with an
Rversion message (not
Rerror) with the
version string the 7 characters
The server may respond with the clients version string,
or a version string identifying
an earlier defined protocol version.
Currently, the only defined version is the 6 characters
9P2000. Version strings are defined such that, if the client string contains
one or more period characters, the initial substring up to but not including
any single period in the version string defines a version of the protocol.
After stripping any such period-separated suffix, the server is allowed to respond
with a string of the form
nnnn is less than or equal to the digits sent by the client.
The client and server will use the protocol version defined by the
servers response for all subsequent communication on the connection.
version request initializes the connection.
All outstanding I/O on the connection is aborted; all active fids are freed (clunked) automatically.
The set of messages between
version requests is called a