hosts的历史
在引入DNS(Domain Name ystem,域名系统)之前,网络中的主机是将容易记忆的域名映射到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:windowssystem32driversetc
(XP系统无法使用bat批处理命令直接替换hosts,需手动替换后重新插拔网线或重启方使hosts生效)
(可更改HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersDataBasePath项修改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":mptnetc
Android:/system/etc/
Symbian第1/2版手机:C:systemdata
Symbian第3版手机:C:private10000882(能使用兼容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 网站域名
之后在浏览器地址栏中输入对应的网站域名即可。
文件修改
1、正确修改hosts文件:
一般打开hosts文件里面都会有个示例,按照其格式修改即可
比如以下内容:即代表打开abc.cn这个网址将解析到127.0.0.1,ip地址与网址间至少有一空格,当然建议通过按 Tab键来编辑,即美观又不容易编写失误;这也就是通过解析到本地回还地址屏蔽一些不友好的网站或ip了,当然在前面加一个#号即可暂时将这一行让它失效。
2、hosts文件的位置:
xp,2000,WIN7等系统在C:windowssystem32driversetc文件夹中
Windows 9x/Me系统在C:Windows文件夹
3、hosts文件的系统属性:
hosts文件默认具有隐藏属性,系统默认设置情况下是看不到的,当然进到这个文件除了直接输入路经也是无法看到了。解决办法:打开我的电脑->点击工具->文件夹选项->查看->取消勾选隐藏受保护的系统文件->确定即可。
修改后无法保存:在Hosts文件上面点右键->属性->把只读属性去掉->确定,即可保存。
在修改HOSTS文件时候,还常常遇到修改保存后无效的情况,这里要提醒大家注意的一点:很多人是写在最后行,写完最后一行后在没有回车的情况下,这一行是不生效的。一定要记得回车。建议大家遵循这样的习惯:“ip地址+Tab+域名+换行”添加记录。
4、Hosts在UAC安全策略无法打开或编辑:
遇到windows VISTA 或者 windows7操作系统无法打开和编辑的情况,提示:“不能创建文件”或者“文件操作失败”等提示,是因为安全机制UAC造成的,你可以使用以下方法解决:按着Shift键,然后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的最新文件[2],这里提供了最新的映射IP地址,将获得的hosts文件附加到自己电脑的hosts中就可以了。
2.利用smarthosts.exe程序,下载smarthosts.exe程序,下载后双击这个程序会生成3个文件hosts、lists和srvlist注意使用这个经常会弹出错误,这个时候不要着急,过几分钟后可以重试。