nslookup google.co.kr
每当我尝试此命令时,IP 结果就会发生变化
但是在 C# 中,使用库 System.Net.Dns
中的方法 GetHostEntry()
,我总是得到相同的结果。
我想知道为什么会出现这种现象,以及使用GetHostEntry
是否可以得到与nslookup
相同的结果。
最佳答案
当您调用GetHostEntry()
时您将获得本地 DNS 缓存中的所有数据。如果最近没有检索到主机名,它将查询 DNS 服务器以获取信息。 NSLOOKUP
命令将每次查询 DNS 服务器,忽略本地缓存中的任何内容。这可能会导致相同的数据反复返回,具体取决于 DNS 服务器上的缓存。
对于大多数简单的 DNS 结果,您每次都会获得相同的数据。对于托管在服务器组上的集群服务(例如 google),结果将由 google DNS 服务器根据负载等进行选择。在这种情况下,连续调用 NSLOOKUP
可能会得到不同的结果。 ,但是GetHostEntry()
将返回相同的结果,直到本地 DNS 缓存中的条目过期。
DNS 缓存有助于减少 DNS 服务器上的负载以及网络流量。除非您每次需要一组不同的结果,GetHostEntry()
将会更快、更高效。
关于c# - nslookup 和 GetHostEntry 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646909/