一个简单的DNS服务器
我必须在C中实现一个DNS服务器,我不知道从哪里开始。 DNS具有的所有功能是什么......我如何在单个C文件中实现一个简单的DNS。一个简单的DNS服务器
我甚至不想使用数据库,只是一个文件将工作。
预先感谢您
这大功课!你的老师雄心勃勃。实现DNS 需要读取至少十分复杂RFC(不提DNSSEC ...)不要 不限制自己的RFC 1034和1035,有强制性 RFC后(如2181和2671)。看到他们的nice graph。
它是一个权威的名称服务器还是递归的?
您是否必须从头开始?如果不是这样,我强烈建议与evldns库,它可以让你在200线下的写 anthoritative名称服务器
dns.net点了RFC 1034: DOMAIN NAMES - CONCEPTS AND FACILITIES和RFC 1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION作为最终的参考。
作为一个热门话题,通过在您的玩具查找列表中包含一些non-ascii IDN名称,以此恭维您的老师。
这两个RFC远远不够(例如,今天真的需要2671)。 而IDN不需要名称服务器的支持,所以它纯粹是为了演示效果。 – bortzmeyer 2009-11-02 10:47:48
,该协议是基于RFC文档可以在这里找到:http://www.zoneedit.com/doc/rfc/
也有,应该是有用的协议的若干问题的解释在互联网中发现,像这样的:http://www.windowsnetworking.com/articles_tutorials/Understanding-DNS-Protocol-Part1.html
DNS是一个很大的规格。如果你真的想要DNS,请使用DNS服务器。所以,如果你想获得真正的快速和肮脏的,为什么不写编辑您的主机文件(C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \ hosts或/ etc/hosts文件(在UNIX上)?)程序
这应该让你开始。
此示例使用BSD套接字建立一个简单的DNS解析器。 http://www.binarytides.com/blog/dns-query-code-in-c-with-winsock-and-linux-sockets/
不写一个完整的DNS,所以阅读永不结束的RFC是有点无聊。或者这是绝对必要的? – 2009-10-31 17:39:30
你是什么意思的裸骨?什么都不支持,但查找? :) – 2009-10-31 17:58:25
是的。我想要一个骨架代码,它让我明白传递的消息的类型等。 – 2009-11-01 07:31:04