Подтвердить что ты не робот

Разработайте базовый DNS-сервер (на С#)

Я разрабатываю очень простой DNS-сервер для своей собственной цели. Как я понимаю, DNS-сервер получает пакеты UDP, содержащие запрошенное доменное имя, и возвращает соответствующий IP-адрес в виде какой-либо стандартной формы.

Существует стандартная библиотека для чтения/записи UDP-пакетов из/в двоичный формат. Но где я могу найти библиотеку С# для сериализации/десериализации DNS-запросов/ответов?

4b9b3361

Ответ 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