Здесь есть несколько вопросов; утверждение о «неверно сформированном пакете» может быть связано с разгрузкой контрольной суммы и, если это так, является ложной ошибкой, поскольку отражает захват пакета, не имеющий полного представления, - вместо этого часть работы была выполнена на сетевом оборудовании. WireShark должен иметь документацию по этому вопросу.
В противном случае различные инструменты (например socat
, nc
или netcat
, или с помощью чрезвычайно похожих функций в оболочках, таких как ksh93
или bash
) могут брать байты из стандартного ввода и выгружать их в пакет UDP. Является ли это «правильным», зависит от протокола; теоретически можно построить и отправить пакет DNS или DHCP таким образом, хотя чаще люди используют библиотеку или специальное программное обеспечение, которое (надеюсь) правильно реализует рассматриваемый протокол, поскольку обычно требуется гораздо больше, чем установка нескольких битов в тело пакета и его отправка по сети, в частности, обработка ответов, повторная попытка после тайм-аута или ошибки, поля заголовка пакета и т. д. Протоколы обычно очень хорошо документированы в RFC или см. серию книг «Иллюстрированный TCP / IP». Стивенсом для еще большей документации.
Конкретные инструменты, такие как nmap
очень нестандартные вещи при создании пакетов. В противном случае для ручного создания пакетов обычно используется язык программирования, хотя, опять же, большинство программного обеспечения будет использовать существующие библиотеки или системные службы для отправки DNS, DHCP или других UDP-пакетов, поскольку они гораздо менее трудоемки и гораздо менее подвержены ошибкам, чем ручное создание необработанного пакет с нуля.