一个简单的DNS服务器

时间:2009-10-31 17:20:17

标签: dns

我必须在C中实现DNS服务器,我不知道从哪里开始。 DNS具有的所有功能......如何在单个C文件中实现简单的DNS。

我甚至不想使用数据库,只需要一个文件即可。

提前谢谢

5 个答案:

答案 0 :(得分:4)

这对家庭作业来说很重要!你的老师雄心勃勃。实施DNS 需要阅读至少十个复杂的RFC(不提DNSSEC ......) 仅限于RFC 1034和1035,强制 RFC之后(例如2181和2671)。请参阅nice graph

它是权威名称服务器还是递归名称服务器?

你必须从头开始吗?如果没有,我强烈建议开始 使用evldns库,可以编写一个 在200行C中的anthoritative名称服务器。

否则,通常的建议适用:阅读源代码(我建议 nsd表示权威服务器,unbound表示递归 一个)。

答案 1 :(得分:1)

dns.netRFC 1034: DOMAIN NAMES - CONCEPTS AND FACILITIESRFC 1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION作为最终参考。

作为一个热门话题,通过在您的玩具查找列表中添加一些non-ascii IDN名称,让您的老师感到惊讶。

答案 2 :(得分:1)

DNS是一个很大的规范。如果您确实需要DNS,请使用DNS服务器。因此,如果你想要一些非常快速和肮脏的东西,为什么不编写一个编辑你的hosts文件的程序(C:\ windows \ system32 \ drivers \ etc \ hosts或/ etc / hosts(在UNIX上)?)

答案 3 :(得分:0)

协议所基于的RFC可在此处找到:http://www.zoneedit.com/doc/rfc/

对于在互联网上找到的协议也有一些解释,例如:http://www.windowsnetworking.com/articles_tutorials/Understanding-DNS-Protocol-Part1.html

答案 4 :(得分:0)

这应该让你开始。

此示例使用BSD套接字构建简单的DNS解析程序。  http://www.binarytides.com/blog/dns-query-code-in-c-with-winsock-and-linux-sockets/