【问题标题】:What is difference between nslookup and GetHostEntry?nslookup 和 GetHostEntry 有什么区别?
【发布时间】:2013-07-12 21:14:04
【问题描述】:

nslookup google.co.kr 每当我尝试此命令时,IP 结果都会发生变化

但在 C# 中,使用库 System.Net.Dns 中的方法 GetHostEntry(),我总是得到相同的结果。

我想知道为什么会出现这种现象,以及我是否可以使用GetHostEntry获得与nslookup相同的结果。

【问题讨论】:

    标签: c# dns ip nslookup resolver


    【解决方案1】:

    当您调用GetHostEntry() 时,您将获得本地 DNS 缓存中的任何数据。如果最近没有检索到主机名,它将查询 DNS 服务器以获取信息。 NSLOOKUP 命令每次都会查询 DNS 服务器,而忽略本地缓存中可能存在的任何内容。这可能会导致相同的数据一遍又一遍地返回,具体取决于您的 DNS 服务器上的缓存。

    对于大多数简单的 DNS 结果,您每次都会获得相同的数据。对于托管在服务器组上的集群服务 - 例如 google - 结果将由 google DNS 服务器根据负载等选择。在这种情况下,您可以从连续调用 NSLOOKUP 获得不同的结果,但 GetHostEntry() 将返回相同的结果,直到条目从本地 DNS 缓存中过期。

    DNS 缓存有助于减少 DNS 服务器的负载并减少网络流量。除非您每次需要一组不同的结果,否则GetHostEntry() 会更快、更高效。

    【讨论】:

    • 非常感谢。但是我必须尽可能多地获取IP信息。所以我需要刷新该缓存并获取特定主机名的另一个 IP 信息。有什么方法可以刷新 C# 代码中的 chace(使用库)?
    • @JehyunShim 保证每次得到不同结果的唯一方法是直接查询负责这些记录的 DNS 服务器。使用nslookup -type=ns google.co.kr 获取负责名称服务器的列表,然后使用其中一个(或多个)进行查询。例如nslookup google.co.kr 216.239.34.10 每次都会给出不同的结果。
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 2018-06-28
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    相关资源
    最近更新 更多