------------------
Request Patch Info
------------------
Sent by client

int 1
int lengthVersion
char[lengthVersion] version
int versionID

----------
Patch Info
----------
Sent by server

loop until length Name = 0
{
	int lengthName
	char[lengthName] fileName
	int fileSize
}

------------
Request File
------------
Sent by client

int 2
int lengthName
char[lengthName] name
int fileOffset


---------
Send File
---------
Sent by server

int lengthName

if lengthName == 0 then stop reading here

char[lengthName] name
int fileSize

loop until lengthData = 0
{
	int lengthData
	byte[lengthData] chunk
}

------------
Divert Login
------------
int ip
int port

----
MOTD
----
int status (0=Error; 1=Logout?; 2=MOTD; 3=Logout + Msg?)

if status == 2 or 3:
int lenMOTD
char[lenMOTD] MOTD

int >3 = unknown response
int 3 = error?

--------
Login OK
--------
int 1

-------------
Login Request
-------------
int 0x15

------
Logout
------
int 0

----------
Keep Alive
----------
int 3

Client writes 0x15 login
Server sends Okay Message

If Okay != 1, then bad protocol

Server sends second Okay Message

If Okay == 0, divert; else login ok and server sends MOTD