Вы либо применяете закон Постеля («Будь консервативен в том, что ты делаешь, будь либеральным в том, что ты принимаешь от других»), - который часто преподносится как одна из причин / условий успеха взаимодействия многих других вещей сверхуИнтернета - или если вы строго применяете RFC, вы считаете его недействительным, и вы можете немедленно ответить, например, с помощью FORMERR.
Во втором случае, поскольку вы получите отклоняющихся клиентов (не обязательно для вашего конкретного случаяв мире DNS они представляют собой множество несоответствующих реализаций в различных точках), вам нужно будет определить, создаете ли вы определенные правила (например, ACL), чтобы принять некоторые из них, тем не менее, поскольку вы считаете их «важными».
Обратите внимание, что на данном этапе ваш вопрос не имеет никакого отношения к программированию (без кода), так что это своего рода оффтоп.Но ответ также зависит от того, какой «обработчик пакетов» вы создаете.Если это для какого-то IDS / мониторинга / и т.д.вам нужно проанализировать «как можно больше» трафика DNS, чтобы сообщить об этом.Если это имитирует реальный распознаватель DNS и просто убедитесь, что он ведет себя как распознаватель, то вам, вероятно, не нужно разбираться со всеми странными отклонениями.
Также помните, что все это можно изменить при передаче, поэтому, если вы получаете некоторые ошибочные вещи, это не всегда является ошибкой, исходящей от отправителя, это может быть из-за какого-то посредника, добровольно или нет.
В заключение невозможно предсказать все, что вы получитеи в любом достаточно широком эксперименте вы будете удивлены количеством трафика, который вы не сможете понять, и тем, как он будет существовать.Поэтому вместо того, чтобы пытаться определить все перед запуском, вам следует перебирать версии, имея четкое представление о вашей цели (максимально возможный анализ для какой-либо системы мониторинга, ИЛИ максимально простой / безопасный / безопасный / близкий к реальным возможностям).Разрешение DNS по возможности).
А что касается "как бы я узнал".Вы можете изучить источник различных существующих распознавателей (bind, nsd, unbound и т. д.) и посмотреть, как они реагируют.Или просто запустите их и добавьте в них несколько ошибочных пакетов, которые вы себе представляете, и посмотрите их ответ.Некоторые случаи, вероятно, существуют в виде модульного / регрессионного теста, а некоторые инструменты, такие как ZoneMaster, возможно, будут расширены (если они еще не выполняли эти конкретные тесты), чтобы охватить ваши случаи.