再谈HOST文件

前几天弄了一个关于禁止打开某个网站的文章后,觉得这个HOST文件真的挺有意思的。并且也总是想把自己对它新的理解写下来(也许大家都明白了)
以下是HOST文件的内容:
# Copyright (c) 1993-1999 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
我在这个文件里加了几个 IP ----域名
的地址对以后,就会发现,不管你后面的域名写的是什么,只要你写的IP 地址确实存在,那么你敲入这个域名以后就会出现那个IP地址对应的网站的内容。
也就是说,只要在HOST文件里有的关于某些域名的解释,就不会把我们在IE地址栏里写入的域名去送到DNS服务器解析。
所以,在这里我们可以禁止一些网站地址。但是,利用这个文件,也有可能让我们中毒吧,呵呵、、、我是自己这么猜想的。就是编写了一个可以改变机器HOST文件文件的病毒,然后在这个文件里,添加一些我们平时用的很多的网站的名字和一个病毒网站的IP地址。
那样我们上去的时候,觉得自己应该可以去什么什么地方。但是我们却去了一个有毒的网站。
呵呵,是不是 太天真了?~~~

我又想了想,反正我们要禁止的那个网站对应的IP地址都是0.0.0.0的嘛,那我们都把他们放在一行中不就可以了吗?
我自己一实验过了,这个是可以的。就是可以把一些想禁止的网站放在一起,然后的IP地址一写一个:0.0.0.0就可以了。
当你在命令提示符的窗口中进行PING这些网站的时候,你们会发现,他们后面对应的IP地址都是0.0.0.0,这样的结果也就是说了,我们文件的设置结果已经生效了~~
再者的话,你要是在这个文件中同时设置俩个条目,并且他们的IP地址是不一样的,但是域名却是一样的。那么就会按第一个出现的那个为标准。
比如:
202.108.9.33    [url]www.163.com[/url]
0.0.0.0         [url]www.163.com[/url]
那这样的话,我们还是可以访问[url]www.163.com[/url]这个网站的。但是后者在前的话,就不可以进行访问了。
我们知道,我们进行通信的时候实际用到的东西实际是:IP地址。
那么我们把我们随便编写的一个域名地址和一个正确的IP地址对写进这个文件,是不是也可以访问到这个正确的IP地址实际对应的哪个网站呢?
我也实验过,结果是不可以的。会出现以下的情况 (我写进去的条目是:202.108.9.33 [url]www.1631.com[/url])
-------------------错误------------------------
你所请求的URL无法获取,当尝试读以下地址时[url]www.baidu.com[/url].
发生了下列错误:
ACCESS DENIED
  当前的存取控制设定禁止你的请求接受,如果你觉得这是错误的,请与你的ISP联系.
GENERATED FI, 18,JAN,2008,,4:56:37 GMT,BY [url]WWW.163.COM[/url](CACHE /2.0)
--------------------------------------------------------------------------------------------------------
那要是这样的话,我们在进行访问一个网站的时候,这个域名的查询工作还是得送到DNS服务器进行查询的吗?要是根本就没有注册过的一个域名,那么就会出现这样的情况。
那我们就把这个加进去的新的条目中的域名换成一个我们很熟悉的一个地址,不就可以了吗?202.108.9.33   [url]www.baidu.com[/url]   看看效果:
还是不行~~
-------------------错误------------------------
你所请求的URL无法获取,当尝试读以下地址时[url]www.baidu.com[/url].
发生了下列错误:
ACCESS DENIED
  当前的存取控制设定禁止你的请求接受,如果你觉得这是错误的,请与你的ISP联系.
GENERATED FI, 18,JAN,2008,,4:56:37 GMT,BY [url]WWW.163.COM[/url](CACHE /2.0)
--------------------------------------------------------------------------------------------------------
但是,当我们把[url]www.baidu.com[/url]的IP地址和[url]WWW.163.COM[/url]的名字对应条目加进去的时候,就可以通过访问[url]WWW.163.COM[/url]达到[url]WWW.BAIDU.COM[/url]的页面.
所以,这个实现的成功与否,与对方的WEB服务器的设置有关系.因为一个可以实现,而一个却不可以实现啊.并且上述的错误都是[url]www.163.com[/url]生成的.所以就应该是服务器的设置问题了.
 
 
当我把163的IP和一个我自己写的域名对应条目加进去的时候(上面的那个),显示的错误信息是那样的:拒绝访问.
那我就换一个带163.com的吧,我就写了一个[url]www.blog.163.com[/url]
结果显示的是这样的错误信息:
---------------------------错误-------------------------------
当你尝试连接以下地址:[url]www.blog.163.com[/url]的时候,发生了以下错误:
无法将你输入的主机名称:[url]www.blog.163.com[/url]转换成IP地址.
DNS服务器返回以下信息:
NAME ERRO:THE DOMIAN NAME DO NOT EXIT
这就表示,
缓存服务器无法解析你输入的URL中的主机名称,请检查名称是否正确.
GENERATED BY NTESWEB.163.COM(SQUID/2.5.STABLE 10)
-----------------------------------------------------------------
从这个返回的错误信息,又了解到一点:你的HOST文件里有域名和IP的对应条目,但是这个请求还是要发送到DNS服务器的.
但是为什么用163的网址对应百度的IP 的时候,就不会出现这样的错误呢?
问题的关键,还是在公司里的WEB服务器的设置上面,是吗?
如果是的话,希望高手可以再讲的清晰一些~
还需要再进一步的学习啊~~
希望高手可以指点下迷津~~


本文转自Mr2Left 51CTO博客,原文链接:http://blog.51cto.com/caihong/59809
上一篇:金三银四背后,一个 Android 程序员的面试心得


下一篇:Java Heap dump文件分析工具jhat简介