Simple Universal Command Protocol
SUCP permits the transmission of contextual data acros an IP interface. Typically this data consists of commands to perform actions or data (such as files) to support those actions. SUCP itself is agnostic as to the content of the data it is transporting.
| Byte | Length | Type | Name | Description |
| 0 | n | string | Destination identifier | Identifies the client to process the message |
| n | 1 | char | Type | Character denoting the type of message - client specific |
| n+1 | 1 | byte | Message ID | Rolling identifier for the message - to identify dropped packets |
| n+2 | 1 | byte | Packet ID | Rolling identifier for multi-packet messages - to identify dropped packets |
| n+3 | 2 | word | Payload length | Length of the payload in bytes |
| n+5 | Payload |
The client matches the name in the packet against its own name and will not process packets unless the names match
If a message fits into a single packet, the message is sent with the next message ID (incremental) and a Packet ID of zero - indicating a single packet message. If the message is multi-packet, the first packet is sent with a packet ID of 1 and then following packets have incrementing packet IDs. Once all data has been transmitted, a packet with a packet ID of zero and a zero length payload is sent to indicate the end of the packet sequence. All packets have the same Message ID.
If a client receives the start multi-packet message and then encounters a different message ID, the original message is discarded and the new message is processed. Thus, the order of arrival is significant.
The protocol can have a maximum packet size specified so it will automatically split payloads into multiple packets when required