4.1 Establishing a Connection

 The server initiates the connection by sending a MILCTRLCMD_OPENCONNECTION message. This message is followed by a MILCTRLCMD_VERSIONREQUEST message that initiates the protocol version negotiation between the server and the client. Once the client processes both messages and replies with a MILMSG_VERSIONREPLY connection notification, the server has to choose a protocol version from the set of protocol versions supported by the client and proceed to announce it to the client by sending a MILCTRLCMD_VERSIONANNOUNCEMENT message. The server has to choose to terminate the connection if the client does not reply in time or if the reply does not contain a protocol version identifier supported by the server.