Нет способа сделать это в общем случае без использования внешней библиотеки.
Если нет никаких требований относительно того, что пакет должен содержать (то есть, если какой-либо пакет ARP будет делать), то вы можете , очевидно, отправлять запрос ARP, если вы находитесь в сети Ethernet, просто пытаясь отправьте что-нибудь на любой IP-адрес в своей собственной подсети (предварительно убедившись, что IP-адрес назначения не находится в кэше ARP, выполнив внешнюю команду arp -d tar.get.ip.address
), но это, вероятно, будет не тем, что вы хотите.
Для получения дополнительной информации о поддержке необработанных сокетов см. Страницу необработанных сокетов TCP / IP *1009*, в частности, Ограничения для необработанных сокетов .