【发布时间】:2013-07-12 21:14:04
【问题描述】:
nslookup google.co.kr 每当我尝试此命令时,IP 结果都会发生变化
但在 C# 中,使用库 System.Net.Dns 中的方法 GetHostEntry(),我总是得到相同的结果。
我想知道为什么会出现这种现象,以及我是否可以使用GetHostEntry获得与nslookup相同的结果。
【问题讨论】:
标签: c# dns ip nslookup resolver
nslookup google.co.kr 每当我尝试此命令时,IP 结果都会发生变化
但在 C# 中,使用库 System.Net.Dns 中的方法 GetHostEntry(),我总是得到相同的结果。
我想知道为什么会出现这种现象,以及我是否可以使用GetHostEntry获得与nslookup相同的结果。
【问题讨论】:
标签: c# dns ip nslookup resolver
当您调用GetHostEntry() 时,您将获得本地 DNS 缓存中的任何数据。如果最近没有检索到主机名,它将查询 DNS 服务器以获取信息。 NSLOOKUP 命令每次都会查询 DNS 服务器,而忽略本地缓存中可能存在的任何内容。这可能会导致相同的数据一遍又一遍地返回,具体取决于您的 DNS 服务器上的缓存。
对于大多数简单的 DNS 结果,您每次都会获得相同的数据。对于托管在服务器组上的集群服务 - 例如 google - 结果将由 google DNS 服务器根据负载等选择。在这种情况下,您可以从连续调用 NSLOOKUP 获得不同的结果,但 GetHostEntry() 将返回相同的结果,直到条目从本地 DNS 缓存中过期。
DNS 缓存有助于减少 DNS 服务器的负载并减少网络流量。除非您每次需要一组不同的结果,否则GetHostEntry() 会更快、更高效。
【讨论】:
nslookup -type=ns google.co.kr 获取负责名称服务器的列表,然后使用其中一个(或多个)进行查询。例如nslookup google.co.kr 216.239.34.10 每次都会给出不同的结果。