Caching DNS缓存如何在Windows和类Unix系统上工作?

Caching DNS缓存如何在Windows和类Unix系统上工作?,caching,dns,Caching,Dns,我在理解DNS缓存如何工作(客户端)时遇到问题。假设我们到处都刷新了DNS缓存(系统、浏览器),现在我们想使用Chrome访问google.com。我想这会是这样的: Chrome检查google.com是否是有效的IP地址(不是) Chrome检查自己的DNS缓存中是否存在此类A(或AAAA)记录(没有) 在类Unix系统上,据我所知,默认情况下没有操作系统级别的DNS缓存,除非正在运行—假设它已打开。然后,对于这两种系统: Chrome在OS DNS缓存中查找适当的DNS记录(没有)

我在理解DNS缓存如何工作(客户端)时遇到问题。假设我们到处都刷新了DNS缓存(系统、浏览器),现在我们想使用Chrome访问google.com。我想这会是这样的:

  • Chrome检查google.com是否是有效的IP地址(不是)
  • Chrome检查自己的DNS缓存中是否存在此类A(或AAAA)记录(没有)
在类Unix系统上,据我所知,默认情况下没有操作系统级别的DNS缓存,除非正在运行—假设它已打开。然后,对于这两种系统:

  • Chrome在OS DNS缓存中查找适当的DNS记录(没有)
  • Chrome要求操作系统解析器解决此问题,并接收类型记录
  • 只要TTL大于0,此记录将同时存储在OS和Chrome DNS缓存中(但浏览器可能会忽略TTL值)
  • 如果Firefox现在想打开google.com,它会在OS DNS缓存中找到记录(并将其保存到自己的DNS缓存中)

我的理解正确吗?

DNS缓存通常是一个网络堆栈问题。。不确定为什么Chrome不仅仅是从一个名字请求一个IP,或者为什么FF会有不同的行为。@user2864740浏览器确实存储DNS缓存。事实上,任何应用程序都可以做到这一点。我想知道它的详细工作原理。例如,Firefox:任何应用程序都可以自行进行DNS查询(浏览器在这方面臭名昭著,现在通过TLS进行DNS查询,尤其是通过HTTPS进行DNS查询,更是如此),因此可以以任何方式在内部缓存这些应用程序,或者要求操作系统代表它们解析名称。然后,操作系统本身可以有一个本地递归名称服务器(如systemd resolved或unbound server等),该服务器将自己进行缓存,或者操作系统使用一个外部名称服务器(ISP或一些公共名称服务器,如Google、CloudFlare、Quad9等),该服务器本身具有缓存。您的理解基本正确,但您的问题在这里是离题的,因为它与编程无关。