我正在考虑运行一个实验来以不同的方式跟踪DNS值(比如它们改变的频率和诸如此类的东西)。为此,我需要能够直接向服务器发出DNS请求,以便1)我知道它来自哪个服务器,2)我可以请求来自多个服务器的响应3)我可以避免本地OS运行缓存
有没有人知道我会直接查询DNS服务器的库(c#,D,C,C ++的优先顺序)?如果没有,那么有谁知道一个容易的了解我可以从?
实现这样一个系统的DNS协议的描述答案 0 :(得分:3)
对于C,我会选择http://cr.yp.to/djbdns/blurb/library.html(低级部分,如果你需要完全控制,即dns_transmit*
和朋友) - 对于C#,也许是http://www.c-sharpcorner.com/UploadFile/ivxivx/DNSClient12122005234612PM/DNSClient.aspx(可以现在不测试那个,“也许”!)。
答案 1 :(得分:3)
我只有C经验,所以这是我的清单:
libresolv是旧的,传统的和标准的方式。它可以在每个Unix(类型man 3 resolver
)上使用,并包含类似的例程
res_query
或多或少地做你想要的。要查询特定名称服务器,通常会更新全局变量_res.nsaddr_list
(请注意,显然,does not work with IPv6)。
ldns是现代而有光泽的解决方案。您有good documentation online。
一个非常常见的图书馆,但显然没有维护,是adns。
答案 2 :(得分:2)
DNS规范分布在很多 RFC上(请参阅nice graph),我强烈建议不实施存根解析器刮。有很多机会弄错。 DNS在过去几年中发展了很多。如果你是勇敢和疯狂,这里是最重要的RFC:
答案 3 :(得分:0)
libdns(我认为它是bind的一部分)。有一个cygwin端口,可能对Windows环境很有用。