我必须在C中实现DNS服务器,我不知道从哪里开始。 DNS具有的所有功能......如何在单个C文件中实现简单的DNS。
我甚至不想使用数据库,只需要一个文件即可。
提前谢谢
答案 0 :(得分:4)
这对家庭作业来说很重要!你的老师雄心勃勃。实施DNS 需要阅读至少十个复杂的RFC(不提DNSSEC ......) 不仅限于RFC 1034和1035,强制 RFC之后(例如2181和2671)。请参阅nice graph。
它是权威名称服务器还是递归名称服务器?
你必须从头开始吗?如果没有,我强烈建议开始 使用evldns库,可以编写一个 在200行C中的anthoritative名称服务器。
答案 1 :(得分:1)
dns.net将RFC 1034: DOMAIN NAMES - CONCEPTS AND FACILITIES和RFC 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/