理解本地 `hosts` 文件原理:从本地解析到完整域名解析流程

706 阅读3分钟

在日常开发和运维中,我们经常通过配置 hosts 文件来修改某些域名的解析行为。但你是否真正了解它的原理?它在整个域名解析流程中扮演着什么角色?本文将带你从 hosts 文件的本质出发,逐步理解整个域名解析的流程,并结合流程图深入解析其工作机制。

1280.jpeg

什么是 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 文件的工作原理

当你在浏览器输入一个域名时,系统会按如下顺序解析:

  1. 应用(浏览器)发起域名请求;
  2. 操作系统优先检查 hosts 文件
  3. 如果找到匹配的域名映射 → 直接使用映射 IP;
  4. 如果未命中 → 进入后续的 DNS 查询流程(包括本地 DNS 缓存、本地域名服务器查询、远程 DNS 查询等)。

image.png

各系统中的 hosts 文件路径

系统类型路径
WindowsC:\Windows\System32\drivers\etc\hosts
macOS/Linux/etc/hosts

一个完整的域名解析流程(含 hosts

我们来详细拆解一次完整的域名解析流程图,从用户在浏览器输入网址那一刻开始,到最终获取到服务器 IP 地址的整个过程:

  1. 优先检查本地 hosts 文件,看是否存在该域名对应的 IP 映射;
  2. 若找到映射,直接返回该 IP,跳过后续 DNS 查询流程;
  3. 若未命中 hosts 文件,继续执行正常的 DNS 查询流程:
    • 检查本地 DNS 缓存,若命中则返回缓存 IP;
    • 若未命中,向配置的本地 DNS 服务器发起请求(通常是路由器或 ISP 提供的 DNS);
    • 若本地 DNS 服务器无缓存,开始递归查询网络 DNS 服务器(根域名服务器 → 顶级域名服务器 → 权威 DNS 服务器);
  4. 若 DNS 查询失败,则域名解析失败,网站无法访问;
  5. 获取最终 IP 地址后,结果逐级返回客户端,同时进行本地缓存。

image.png

应用场景:为什么要配置 hosts

  • 前端/后端联调:将 api.example.com 映射到测试服务器 IP;
  • 屏蔽广告或不良网站:将域名映射到 127.0.0.1,实现本地阻断;
  • 故障切换和预热:临时修改域名解析地址,绕过故障节点;
  • 本地开发环境:模拟生产环境的域名,方便开发调试;

小结

  • hosts 文件是本地域名解析的起点,优先级高于一切 DNS 查询;
  • 它可用于快速配置、联调、屏蔽或应急处理
  • 熟悉它的原理和解析流程,有助于排查网络异常、构建本地开发环境;

希望这篇文章,对你有所帮助、有所借鉴~