c# - nslookup 和 GetHostEntry 有什么区别?

标签 c# dns ip nslookup resolver

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/

相关文章:

c# - 在 C# 中使用 IP 协议(protocol)上的原始套接字读取传入数据包

c# - 我应该如何使用 &str、Option 和 String 编码 Rust 函数并在 C# 中使用它?

apache - AWS 服务器上新安装的 Apache-Tomcat,我如何从外部世界访问

ruby-on-rails - Rails Heroku SSL https ://redirect

html - 如何让 google 索引我的自定义域而不是 github pages 域?

c# - 如何在本地网络中获取 IP 地址及其具有设备 MAC 的 http 端口

C# 性能 - 使用 AppendAllText 分块写入文件

c# - Hibernate 查询中的 Unicode 字符串

c# - 在 C# 中捕获错误时退出程序?

c - 使用 TCP/IP : recv() blocks 的套接字编程