If you must have your own protocol,
Please please please use packet framing.
SLIP Framing only a few lines of code. Specified in (RFC 1055)
So now all packets can always look like this
<slip packet start>
message
message crc
<slip packet start>
Don't send a message length. It can get corrupted and then the receiver message parsers get confused.
If your receiver has a small receiver buffer and it overflows, you just keep reading till the packet boundary. No harm done.
Plenty of simple 2 byte CRC's; the Xmodem one is easy. You can just xor all the bytes in the packet it you must.
If you wanted to be a really nice person, use PPP, DDNS and HTTP-REST for your actual commands.
Lovely book on doing this on 16 series PIC processor in C by Jeremy Bentham, TCP/IP Lean.
Then you can use a web browser to talk to it, or something like libcurl from C code.
As almost every programming language has libraries to do http, everyone can talk to your device.