2011-01-11 25 views
18

Estoy desarrollando un servidor DNS muy básico para mi propio propósito. Tal como lo entiendo, el servidor DNS recibe paquetes UDP que contienen el nombre de dominio solicitado y devuelve la IP correspondiente bajo algún tipo de formulario estándar.Desarrollar un servidor DNS básico (en C#)

Hay un standard library para leer/escribir paquetes UDP desde/a formato binario. Pero, ¿dónde puedo encontrar una biblioteca de C# para serializar/deserializar las solicitudes/respuestas de DNS?

Respuesta

17

La biblioteca de código abierto ARSoft.Tools.Net contiene un componente de servidor DNS (consulte documentation).

Puede usar esta biblioteca directamente, o simplemente usar la fuente como punto de partida para crear su propio serializador de solicitudes DNS.

+0

El código fuente del componente de servidor de DNS de hecho contiene código de análisis de paquetes DNS. ¡Gracias! –

3

Por lo que puedo decir, no pude encontrar una biblioteca para C# que maneja la serialización/deserialización de paquetes DNS, lo que significa que es probable que tenga que implementar la suya propia.

Editar: Encontré este proyecto de sniffer de paquetes de red en Code Project que podría tener lo que necesita. Afirma ser capaz de analizar TCP/UDP/DNS

encontré este sitio muy útil para TCP/IP que tiene un conjunto muy amplio de páginas que describen DNS packet types incluyendo el general message format.

Puede haber alguna ayuda adicional de este previous SO question embargo.

3

Si miras en wikipedia encuentras una lista de todos los RFC para el protocolo dns, ¡considero que los rfc son la mejor manera de implementar un protocolo de red!

ahora el protocolo dns tiene muchos rfc, así que no sé si esta es la mejor manera de leer el protocolo, pero obtienes toda la información que necesitas al menos.

http://en.wikipedia.org/wiki/Domain_Name_System#Internet_standards

+1

Me encontré implementando las recomendaciones RFC antes de probar la biblioteca ARSoft. Más específicamente, utilicé las secciones 4.1.1 y siguientes de: http://tools.ietf.org/html/rfc1035 –

Cuestiones relacionadas