在日常上网中我经常需要跟 Hosts 打交道,比如访问部分海外网站,或者是在外面访问公司内网,又或者日常开发测试,都需要修改 Hosts。

不要觉得 Hosts 很高深,说不定你在平时的网上冲浪中也会接触到。

今天就来简单科普一下 Hosts,让小白也能够轻松了解它。

Hosts 是什么

Hosts 是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联数据库,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts 文件中寻找对应的 IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交 DNS 域名解析服务器进行 IP 地址的解析。

如果这段话讲得很懵逼,那我举个例子,比如说百度的 IP 是 14.215.177.38,这一串没有任何意义和规律的东西很难记对吧,所以百度就搞了一个域名叫 www.baidu.com,那么你在浏览器中只需要输入这个域名就能够访问到百度的首页。

但是实际上浏览器是通过 IP 地址才能找到该网站所在的服务器并进行访问的。在 Hosts 文件中没有添加这个映射的情况下,系统会先将这个域名告诉 DNS 域名解析服务器,然后等解析出 IP 后再进行访问;而如果在 Hosts 中添加了这个映射,那么就可以跳过解析 IP 这一步,因为它可以直接从 Hosts 中获取到 IP,因此访问速度就会变得快很多。

访问一些受限制的网站也是同理,DNS 域名解析服务器解析不到对应的 IP,所以你也就无法正常访问了。

可以说,操作系统的 Hosts 文件则是有着类似本地 DNS 服务器的作用,而且比网络上的 DNS 具有更高的优先级。

如果这样解释还是不明白,那我再打个比方:

有一个地点,域名就相当于这个地址,比如广州塔,挺好记的对吧,而 IP 就相当于经纬度,比如我告诉你东经 113.32°,北纬 23.11°,相信你是崩溃的,而 Hosts 的作用就是你有个小本本记录地址和经纬度的映射关系,那么只要我告诉你地址,你不需要再去用专业的工具查,而是马上打开你的小本本,然后就可以根据经纬度立刻在地图上找到定位,这就是效率。

而限制访问就相当于,存在一个军事基地,但是由于军事基地是保密的,所以你在地图上不一定能找到它,这时候 Hosts 的作用就是,有一个内部人员告诉你这个军事基地的经纬度,那你就记在了小本本上,下次你想找这个军事基地的时候,马上打开你的小本本,就有答案了。

Hosts 的作用

根据上述这样的特点,Hosts 文件可以应用在很多场景,包括但不限于以下几种:

加快域名解析

上面也提到,对于要经常访问的网站,我们可以通过在 Hosts 中配置域名和 IP 的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出 IP,而不用请求网络上的 DNS 服务器,同时也能绕过 DNS 污染与劫持。

方便局域网用户

在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设 DNS 服务器,访问这些服务器时,要输入难记的 IP 地址,这对不少人来说相当麻烦。

可以分别给这些服务器取个容易记住的名字,然后在 Hosts 中建立 IP 映射,这样以后访问的时候,只要输入这个服务器的名字就行了。

屏蔽网站

有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用 Hosts 把该网站的域名映射到错误的 IP 或本地计算机的 IP,这样就达到屏蔽访问的效果,同样也可以用于屏蔽不健康网站、屏蔽垃圾广告网址等。

虚拟域名

很多时候,网站建设者需要把软环境搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以将本地 IP 地址与一个虚拟域名做地址指向,就可以达到要求的效果,且无需花费。

域名重定向

开发或测试应用时,利用 Hosts 将域名临时指向到测试服务器 IP,可以方便自己测试,同时又不影响他人和线上的应用。

总结

说了那么多,其实 Hosts 并不神秘,简单理解它就是个电脑本机的「IP 地址 ↔ 域名」的对应表,系统或任何软件都会优先先检查 Hosts 里面有没对应的配置,之后才会去查询网上的 DNS 服务器。

因此你可以利用 Hosts 做很多有趣、有用的事情。

当然,本文只是一个简单的科普,追根溯源其实还有很多东西并没有详细聊到,比如 DNS 等,有兴趣的朋友可以自行深挖。