了解hosts前先了解下网络工作原理。
我们访问网站,实际是通过ip地址访问该网站的服务器,例如百度的其中一个ip地址为 14.215.177.39,而每次访问网站输入ip地址太麻烦,ip地址也不容易记住,这时候就用到了域名,比如百度的域名 www.baidu.com 。
这样,我们访问网站时只需要输入域名即可,浏览器通过请求DNS服务器将域名解析成 ip地址从而访问网站。
详细可看 DNS解析过程原理 - 掘金 (juejin.cn)。
what is hosts?
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,也就是映射关系。需要注意的是,Hosts文件配置的映射是静态的,这样如果ip地址改变了,那我们将无法访问,所以我们要定时更新IP地址。
where is hosts?
C:\Windows\System32\drivers\etc\
hosts文件如何修改?
hosts所在目录中是不能修改文件的,因为权限不够。所以,我们可以将hosts文件复制到桌面或者其它位置,修改完毕后在替换原文件即可。
hosts有什么用?
操作系统规定,在进行DNS请求以前,先检查自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。
依据这个,我们就可以用来加速网页访问以及屏蔽广告。
如何加速网页访问?
在hosts中添加指定域名和其对应ip后,hosts文件优先级高于DNS,这样浏览器不会产生对DNS域名服务器的请求,不会发生对域名的解析,直接在hosts中找到ip地址访问即可。不解析域名直接访问ip地址,这样就相当于加速了网页访问。
当然,这样的方法并不总是有效,因为有的一个域名有多个ip地址,多个ip就会产生一个问题!每个时间段中每个ip地址访问时间都是不一样的。而我们在hosts文件中只指定了一个IP。正是因此,这个方法有时候未必起到加速的作用。
这个方法对github的访问也许有较大帮助。
有自愿者在github上发布了hosts文件,里面维护了全球正确的 DNS 记录文件,有些域名ip地址可以参考这个,比如github的ip地址。
ADhosts/hosts at master · otobtc/ADhosts · GitHub
具体示例:
那如何查看一个域名的ip的地址呢?
你可以使用 命令 nslookup+域名
的方式查看ip地址,但这方法不是很建议。
nslookup命令详解_在努力!-CSDN博客_nslookup命令详解步骤
nslookup命令详解 - 马昌伟 - 博客园 (cnblogs.com)
win+R 然后输入 cmd 打开命令提示符
当你使用nslookup+域名的方式无法获取ip地址时,可以指定域名服务器。
图中 8.8.8.8是谷歌DNS服务器,指定使用谷歌DNS服务器解析域名。
非权威应答表示我所查询的域名不在谷歌DNS服务器记录中,是谷歌DNS服务器在其它DNS服务器上得到的。
图中我获得了百度的两个ip地址,但不是百度只有这两个。你换个时间再查看,也许获得的ip地址就不一样了。
如何屏蔽广告?
当我们访问的网页中含有广告链接时,加载渲染该网页时会产生对这些广告链接的请求,然后浏览器就会对这个链接进行解析(实际是DNS服务器解析的),而后弹出广告页面。
一样的,我们在hosts在对广告链接进行指定ip(一般为本机回环地址),因为hosts优先级高于DNS服务器,所以相当于我们改变了广告链接的实际ip地址,这样就不会产生广告了。
本机回环地址:127.0.0.0-127.255.255.255 两边不能取。通常使用127.0.0.1
屏蔽广告具体可以查看我的这一篇博客
修改hosts文件屏蔽广告原理及实现_diyu-CSDN博客
总结
hosts功能由此可以看出很强大。所以,我们平时可以打开hosts文件看看,如果安装了什么恶意软件或者其它原因修改了域名、ip地址,及时删除。