Our protocol is a multi-layered protocol.
As bottom most layer we have the Framing Layer. This does the most basic feature negotiation, compression/encryption, and allows splitting the stream into separate message frames.
On top of that rests the Message Layer. It handles handshaking, core setup, login, and afterwards provides the ability to request objects, initialize them, and run sync/rpc calls on them.
Features for the Message Layer level feature negotiation are specified in Features.
Our business logic is based solely on these sync, init, and rpc calls. It will be described at a later time.