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注意使用這個經常會彈出錯誤,這個時候不要着急,過幾分鐘後可以重試。



















