Nevím co jak to tam máš, ani jsem to všechno nečetl, ale řešení je prosté: za každou zprávu kterou posíláš přidej ještě jedno neb odvoubajtových checksum. Po přijetí zprávy pro ni udělej checksum a ověř si, jestli sedí s checksumem na konci zprávy. Pokud ne, zprávu zahoď.
Pokud je to mimořádně mission critical, udělej vážený checksum tím, že každý bajt do sumy budeš sčítat jako násobek jeho pozice ve zprávě. To ti ošetří i pospřeházení bajtů.