Hosts是一个没有扩展名的系统档案,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP位址建立一个关联“资料库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts档案中寻找对应的IP位址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析伺服器进行IP位址的解析。
需要注意的是,Hosts档案配置的映射是静态的,如果网路上的计算机更改了请及时更新IP位址,否则将不能访问。
基本介绍
- 外文名:hosts
- 特点:没有扩展名 唯读档案
- 本质:系统档案
- 打开工具:记事本等
- 作用:网址域名与对应IP建立“资料库”
历史和工作原理
在引入DNS(Domain Name System,域名系统)之前,网路中的主机是将容易记忆的域名映射到IP位址并将它保存在一个共享的静态档案hosts中,再由hosts档案来实现网路中域名的管理。最初Internet非常小,仅使用这个集中管理的档案就可以通过FTP为连入Internet的站点和主机提供域名的发布和下载。每个Internet站点将定期地更新其主机档案的副本,并且发布主机档案的更新版本来反映网路的变化。
但是,当Internet上的计算机迅速增加时,通过一个中心授权机构为所有Internet主机管理一个主机档案的工作将无法进行。档案会随着时间的推移而增大,这样按当前和更新的形式维持档案以及将档案分配至所有站点将变得非常困难,甚至无法完成,于是便产生了DNS伺服器。
浏览器访问网站,要首先通过DNS伺服器把要访问的网站域名解析成其指定的IP位址,之后,浏览器才能对此网站进行定位并且访问其数据。
作业系统规定,在进行DNS请求以前,先检查系自己的Hosts档案中是否有这个域名和IP的映射关係。如果有,则直接访问这个IP位址指定的网路位置,如果没有,再向已知的DNS伺服器提出域名解析请求。也就是说Hosts的IP解析优先权比DNS要高。
存储位置
hosts档案在不同作业系统(甚至不同Windows版本)的位置都不大一样,
以下为hosts档案在不同系统中所处的目录
Windows XP/2000/Vista/7/8/8.1/10:C:\windows\system32\drivers\etc\
(XP系统无法使用bat批处理命令直接替换hosts,需手动替换后重新插拔网线或重启方使hosts生效)
(可更改\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath项修改host位置)
Windows 95/98/Me:%WinDir%\ (其实就是C:\WINDOWS)
Linux及其他类Unix作业系统:/etc/
Mac OS 9及更早的系统:System Folder: Preferences或System folder(档案格式可能与Windows和Linux所对应的档案不同)
Mac OS X:/private/etc(使用BSD风格的hosts档案)
OS/2及eComStation:"bootdrive":\mptn\etc\
Android:/system/etc/
Symbian第1/2版手机:C:\system\data\
Symbian第3版手机:C:\private\10000882\(能使用兼容AllFiles的档案浏览器访问。)
iPhone OS:/etc/(需要越狱)
iPad OS:/private/etc
webOS:/etc
档案内容
Windows版本原始host档案内容:
# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.## This file contains the mappings of IP addresses to host names. Each# entry should be kept on an individual line. The IP address should# be placed in the first column followed by the corresponding host name.# The IP address and the host name should be separated by at least one# space.## Additionally, comments (such as these) may be inserted on individual# lines or following the machine name denoted by a '#' symbol.## For example:## 102.54.94.97 rhino.acme.com # source server# 38.25.63.10 x.acme.com # x client host# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost
如果你怀疑你的hosts档案 被病毒 木马修改,可複製以上内容修复hosts 档案。
值得一提的是#后都是注释,所以清空hosts档案对系统正常运行并没有什幺影响。
具体作用
来看一下Hosts档案的工作方式以及它在具体使用中起哪些作用。
1、加快域名解析
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关係,提高域名解析速度。由于有了映射关係,当我们输入域名计算机就能很快解析出IP,而不用请求网路上的DNS伺服器。
2、方便区域网路用户
在很多单位的区域网路中,会有伺服器提供给用户使用。但由于区域网路中一般很少架设DNS伺服器,访问这些伺服器时,要输入难记的IP位址。这对不少人来说相当麻烦。可以分别给这些伺服器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个伺服器的名字就行了。
3、禁止网站(域名重定向)
有很多网站不经过用户同意就将各种各样的外挂程式安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP位址, 0.0.0.0是错误的IP位址。
如果,我们在Hosts中,写入以下内容:
127.0.0.1要禁止的网站A的域名
0.0.0.0要禁止的网站B的域名
这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了禁止网站A 和B的目的。
4、顺利连线系统
对于Lotus的伺服器和一些资料库伺服器,在访问时如果直接输入IP位址那是不能访问的,只能输入伺服器名才能访问。那幺我们配置好Hosts档案,这样输入伺服器名就能顺利连线了。
5.虚拟域名
很多时候,网站建设者需要把”软环境“搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以将本地 IP 地址与一个”虚拟域名“做地址指向,就可以达到要求的效果,且无需花费。如:
127.0.0.1 网站域名
之后在浏览器地址栏中输入对应的网站域名即可。
127.0.0.1 网站域名
之后在浏览器地址栏中输入对应的网站域名即可。
档案修改
1、修改hosts档案:
一般打开hosts档案里面都会有个示例,按照其格式修改即可
比如以下内容:
127.0.0.1 abc.cn
修改格式

即代表打开abc .cn这个网址将解析到127.0.0.1,ip地址与网址间至少有一空格,当然建议通过按[Tab]键来编辑,即美观又不容易编写失误;这也就是通过解析到本地回还地址禁止一些不友好的网站或ip了,当然在前面加一个#号即可暂时将这一行让它失效。
在修改HOSTS档案时候,还常常遇到修改保存后无效的情况,这里要提醒大家注意的一点:很多人是写在最后行,写完最后一行后在没有回车的情况下,这一行是不生效的。一定要记得回车。建议大家遵循这样的习惯:“ip地址+Tab+域名+换行” 添加记录。
2、hosts档案的系统属性:
hosts档案默认具有隐藏属性,系统默认设定情况下是看不到的,当然进到这个档案除了直接输入路经也是无法看到了。解决办法:打开我的电脑->点击工具->资料夹选项->查看->取消勾选隐藏受保护的系统档案->确定即可。
修改后无法保存:
Wikipedia Hosts

在Hosts档案上麵点右键->属性->把唯读属性去掉->确定,即可保存。
3.Hosts在UAC安全策略无法打开或编辑:
遇到windows VISTA 或者 windows 7 作业系统无法打开和编辑的情况,提示:“不能创建档案” 或者 “档案操作失败”等提示,是因为安全机制UAC造成的,你可以使用以下方法解决:
按着Shift键,然后Hosts档案上面右键, 以管理员方式运行即可。
4.一个比较便捷的打开hosts档案的方法
新建一个txt档案,在你其中输入:
notepad "%SystemRoot%\system32\drivers\etc\hosts"
ipconfig /flushdns
exit 保存,将扩展名改成成.bat,之后双击这个bat档案就可以自动打开hosts档案进行修改了。
5.Android中的Hosts
由于某些原因,可能需要修改 hosts 档案指定域名到对应的 IP 地址。Android 是基于 Linux 的系统,与 Linux 类似,通过 hosts 档案来设定。
在 Android 下,/etc 是 link 到 /system/etc 的,我们需要修改 /system/etc/hosts 来实现。但是这个档案是唯读,不能通过 shell 直接修改。可以通过连线到 PC 上使用 adb 来修改。步骤如下:
1、获得root许可权:adb root
2、设定/system为可读写:adb remount
3、将hosts档案複製到PC:adb pull /system/etc/hosts
4、修改PC机上档案
5、将PC机上档案複製到手机:adb push /system/etc/hosts
如果要查看是否修改成功,可以在PC上执行adb shell,运行cat /system/etc/hosts;或者在手机上运行cat /system/etc/hosts。
在Android系统中,hosts档案格式有一点与PC机Linux不同:不能在一行中一个IP对应多个域名,比如:
127.0.0.1 host1.example.com host2.example.com host3.example.com
在大多PC机Linux系统是合法的,但不能在Android上起作用,需要拆成每个域名一行才能使用:
x.x.x.x host1.example.com
x.x.x.x host2.example.com
x.x.x.x host3.example.com
档案更新
1.访问googlecode网站获得Google Hosts的最新档案,这里提供了最新的映射IP位址,将获得的hosts档案附加到自己电脑的hosts中就可以了;
2.利用smarthosts.exe程式,下载smarthosts.exe程式,下载后双击这个程式会生成3个档案 hosts、lists和srvlist注意使用这个经常会弹出错误,这个时候不要着急,过几分钟后可以重试。