我必須在C中實現一個DNS服務器,我不知道從哪裏開始。 DNS具有的所有功能是什麼......我如何在單個C文件中實現一個簡單的DNS。一個簡單的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