DNS-клиент должен предоставлять наружу три функции:
устанавливает к какому DNS-серверу обращаться. server - строка, которая содержит либо IPv4 адрес, либо адрес формата IP:port. Если порт не указан, по умолчанию используется стандартный порт 53.
возвращает в callback лексикографически отсортированный массив IPv4-адресов (строк), соответствующих адресу domain, либо пустой массив, если DNS-сервер сообщает об отсутствии записей
возвращает в callback лексикографически отсортированный массив IPv6-адресов (строк), соответствующих адресу domain, либо пустой массив, если DNS-сервер сообщает об отсутствии записей. IPv6-адреса записаны согласно рекомендациям Википедии. Вы можете (но не обязаны) использовать пакет ip6addr для этого
Обе функции resolve4 и resolve6 используют node-style callbacks и не должны генерировать синхронные исключения. Если в течение 2000ms с момента запроса ответ не получен - resolve4 и resolve6 должны возвращать ошибку. Для общения с DNS запрещено использовать модули dns, child_process, http и прочее - вы должны самостоятельно реализовать общение с DNS по протоколу UDP.
- секции серверов имен и секцию дополнительной информации можно игнорировать
- мы работаем только с DNS-запросами и ответами, которые умещаются в 512 байт
- Необходимо поддерживать только A и AAAA запросы
- DNS-запросе отсылаем ровно один вопрос к серверу (query)