目录
[1. 客户端缓存(以浏览器缓存为列)](#1. 客户端缓存(以浏览器缓存为列))
[2. 操作系统缓存](#2. 操作系统缓存)
[2.cmd ping查找顺序(非浏览器)](#2.cmd ping查找顺序(非浏览器))
一、缓存分类
在一台终端上,DNS缓存可以存在于多个层次,包括操作系统层、应用程序层和网络设备层。以下是查找DNS缓存的方法以及它们的优先级:
1. 客户端缓存(以浏览器缓存为列)
PS:很多而客户端都有自己的dns缓存,如web浏览器、邮件客户端等
每个浏览器都有自己的DNS缓存,用于加速域名解析。要清除浏览器的DNS缓存,可以按照以下步骤操作:
- Chrome:
-
- 在地址栏中输入 chrome://net-internals/#dns 并按下回车。
- 点击"Clear host cache"按钮。
- Firefox:
*- 在地址栏中输入 about:networking#dns 并按下回车。
- 点击"Clear DNS Cache"按钮。
2. 操作系统缓存
操作系统维护一个DNS缓存,以减少对DNS服务器的查询次数。可以使用以下命令查看和清除操作系统的DNS缓存:
- Windows:
- 查看DNS缓存:ipconfig /displaydns
- 清除DNS缓存:ipconfig /flushdns
- Linux(以systemd-resolved为例):
- 查看DNS缓存:sudo systemd-resolve --statistics
- 清除DNS缓存:sudo systemd-resolve --flush-caches
其他Linux系统(如使用nscd或dnsmasq)可能有不同的命令:
-
- sudo service nscd restart 或 sudo systemctl restart nscd
- sudo service dnsmasq restart 或 sudo systemctl restart dnsmasq
- macOS:
- 查看DNS缓存:sudo killall -INFO mDNSResponder
- 清除DNS缓存:sudo killall -HUP mDNSResponder
3.本地hosts文件静态映射
-
- Windows: C:\Windows\System32\drivers\etc\hosts
- Linux/Unix/macOS: /etc/hosts
二、DNS查找优先顺序
1.浏览器查找顺序
浏览器缓存 > 操作系统缓存 > 本地Hosts文件 > DNS服务器查询
2.cmd ping查找顺序(非浏览器)
本地Hosts文件 > 操作系统缓存 > DNS服务器查询
关键差异点
- 浏览器缓存:浏览器有自己的DNS缓存机制,这是为了提高浏览速度和效率。命令行工具(如ping)通常不使用浏览器缓存。
- 顺序和优先级:
-
- 浏览器会先检查自己的缓存,然后再查询操作系统缓存和hosts文件。
- 命令行工具直接从本地hosts文件开始查询,然后检查操作系统缓存。
为什么会有这种差异?
- 性能优化:浏览器缓存DNS记录是为了提高网页加载速度,因为浏览器需要频繁解析大量的域名。
- 一致性和控制:命令行工具更依赖于操作系统的DNS解析顺序,以确保结果的一致性和可控性。