Поясню что я понимаю под сложностью:
1. Наличие в протоколе полей, влияющих на порядок байт при вычитывании
Это относится в основном к протоколам транспортного уровня, а они обязаны быть простыми и универсальными, чтобы не нести лишнюю нагрузку. Протоколы более верхнего уровня, которые могут иметь множество дополнительных фич, обычно работают поверх простых, и наличие полей влияющих на порядок байта относится IMHO не к сложности протокола а к его положению в OSI
2. Разные форматы интерпретации данных - например ASCII, UTF-*, etc.
Это относится только к конкретным текстовым протоколам обычно прикладного уровня, типа HTTP, telnet. Потому что протоколы пониже работают просто с набором байт, чаще блоками.
7. Наличие полей не кратных двум. Например MRP протокол - OUI (organizational unique id) имеет размер 3 байта.
Вообще не относится к сложности. При работе с блоками или заголовками, поля могут быть какими угодно.
Да просто берете не узкоспециализированный а общий протокол, типа TCP и попробуйте разобраться со ВСЕМИ его фичами. Просто утонете.