Разработайте базовый DNS-сервер (на С#)
Я разрабатываю очень простой DNS-сервер для своей собственной цели. Как я понимаю, DNS-сервер получает пакеты UDP, содержащие запрошенное доменное имя, и возвращает соответствующий IP-адрес в виде какой-либо стандартной формы.
Существует стандартная библиотека для чтения/записи UDP-пакетов из/в двоичный формат. Но где я могу найти библиотеку С# для сериализации/десериализации DNS-запросов/ответов?
Ответы
Ответ 1
Библиотека с открытым исходным кодом ARSoft.Tools.Net содержит компонент DNS-сервера (см. documentation).
Вы можете использовать эту библиотеку напрямую или просто использовать источник в качестве отправной точки для создания собственного сериализатора запросов DNS.
Ответ 2
Насколько я могу судить, я не смог найти библиотеку для С#, которая обрабатывает сериализацию/десериализацию пакетов DNS, что означает, что вам, вероятно, придется сворачивать самостоятельно.
Изменить: я столкнулся с проектом сетевого анализатора сетевых пакетов Code Project, который может иметь то, что вам нужно. Претензии, чтобы иметь возможность анализировать TCP/UDP/DNS
Я нашел этот очень полезный сайт для TCP/IP, который содержит довольно полный набор страниц, описывающих Типы DNS-пакетов, включая общий формат сообщения.
Может быть некоторая дополнительная помощь от этого предыдущего вопроса SO, хотя.
Ответ 3
Если вы посмотрите на wikipedia, вы найдете список по всем RFC для протокола dns, я считаю, что rfc - лучший способ реализовать сетевой протокол!
теперь протокол dns имеет довольно много rfc, поэтому я не знаю, является ли это лучшим способом для чтения протокола, но вы получаете всю необходимую информацию по крайней мере.
http://en.wikipedia.org/wiki/Domain_Name_System#Internet_standards