在日常开发和运维中,我们经常通过配置 hosts 文件来修改某些域名的解析行为。但你是否真正了解它的原理?它在整个域名解析流程中扮演着什么角色?本文将带你从 hosts 文件的本质出发,逐步理解整个域名解析的流程,并结合流程图深入解析其工作机制。
什么是 hosts 文件?
hosts 是操作系统中一个用于将域名映射为 IP 地址的纯文本文件。它相当于一个本地的微型 DNS,在域名解析过程中拥有最高优先级。
典型配置示例:
127.0.0.1 example.com
10.0.0.12 dev.api.com
这意味着:
- 当访问
example.com,系统会直接使用127.0.0.1,不再进行其他 DNS 查询; - 访问
dev.api.com时会直接解析到10.0.0.12。
hosts 文件的工作原理
当你在浏览器输入一个域名时,系统会按如下顺序解析:
- 应用(浏览器)发起域名请求;
- 操作系统优先检查
hosts文件; - 如果找到匹配的域名映射 → 直接使用映射 IP;
- 如果未命中 → 进入后续的 DNS 查询流程(包括本地 DNS 缓存、本地域名服务器查询、远程 DNS 查询等)。
各系统中的 hosts 文件路径
| 系统类型 | 路径 |
|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
| macOS/Linux | /etc/hosts |
一个完整的域名解析流程(含 hosts)
我们来详细拆解一次完整的域名解析流程图,从用户在浏览器输入网址那一刻开始,到最终获取到服务器 IP 地址的整个过程:
- 优先检查本地
hosts文件,看是否存在该域名对应的 IP 映射; - 若找到映射,直接返回该 IP,跳过后续 DNS 查询流程;
- 若未命中
hosts文件,继续执行正常的 DNS 查询流程:- 检查本地 DNS 缓存,若命中则返回缓存 IP;
- 若未命中,向配置的本地 DNS 服务器发起请求(通常是路由器或 ISP 提供的 DNS);
- 若本地 DNS 服务器无缓存,开始递归查询网络 DNS 服务器(根域名服务器 → 顶级域名服务器 → 权威 DNS 服务器);
- 若 DNS 查询失败,则域名解析失败,网站无法访问;
- 获取最终 IP 地址后,结果逐级返回客户端,同时进行本地缓存。
应用场景:为什么要配置 hosts?
- 前端/后端联调:将
api.example.com映射到测试服务器 IP; - 屏蔽广告或不良网站:将域名映射到
127.0.0.1,实现本地阻断; - 故障切换和预热:临时修改域名解析地址,绕过故障节点;
- 本地开发环境:模拟生产环境的域名,方便开发调试;
小结
hosts文件是本地域名解析的起点,优先级高于一切 DNS 查询;- 它可用于快速配置、联调、屏蔽或应急处理;
- 熟悉它的原理和解析流程,有助于排查网络异常、构建本地开发环境;
希望这篇文章,对你有所帮助、有所借鉴~