|  | The 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 Rversion reply. The tag should be NOTAG (value (ushort)~0)
    for a
    version message. 
    
    
    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 client’s
    value. Thenceforth, both sides of the connection must honor this
    limit. 
    
    
    The 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 client’s version string, it should respond
    with an Rversion message (not Rerror) with the version string
    the 7 characters “unknown”. 
    
    
    The server may respond with the client’s 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 9Pnnnn, where 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 server’s response for all subsequent communication on the
    connection. 
    
    
    A successful 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 session. 
 |