The game is a real time space strategy game, the network system I'm implementing is similar to that of AOE in its sending what the players are doing and replicating their actions on each of the clients. And implementing what Warcraft3 did and have it so all clients are constantly kept in synch with a strict PING packet system.

I'm using TCP as the transport layer so all packets are guaranteed to be delivered, it isn't a frantic game and is intended for LAN play so the slight speed hit with TCP over UDP is minimal.

Assuming the player clicks on a squad of cruisers, and points them, say at coordinates 18012,12022.. a message is constructed, example:

* the message code 4Bytes
* message data xBytes (depends on message)
* frame number 6Bytes

The maximum size for a message is about 265( for a chat message 255 characters long).

Each user in the game is assigned an ID for logging purposes, each is unique(almost like a GUID in appearance), the ID's can easily be obtained using an EXE available with the game, and are used for resuming a saved network game, statistics logging, etcetc. creating a hash of the servers ID and the clients ID would provide a basis for the encryption key, this could be then changed using some bit manipulation which would change the key for each packet.
This would then hamper the hackers ability to spoof a message as the server noticing any duplicate packet ID, undeciperable message(meaning duplicated encryption) drops the user.
* The packets would be non-duplicatable due to changing encryption key
* Packets duplicated or inserted would cause an inconsistency in incoming packet frame numbers

Other information you might need:

* All nodes (clients and server) store an image of the game in progress
* Server tell clients what "the buttons the other clients are pressing"
* Random actions are broadcasted to prevent random seed errors
* The server sends a frame update packet roughly 4 times every second.

Information such as squads moving is not sent across the connection, as this can be determined easily from a message such as "move squad z to coordinates x, y"

Anyway, thats all for me for tonight, thanks for the ideas