DNS 定义
, ,3)本地DNS 检查缓存信息,若有,将IP 地址返回给客户端,客户端可直接访问WEB 站点,若无4)本地DNS 检查区域文件是否有对应的


3)本地DNS 检查缓存信息,若有,将IP 地址返回给客户端,客户端可直接访问WEB 站点,若无
4)本地DNS 检查区域文件是否有对应的IP ,若有,将IP 地址返回给客户端,客户端可直接访问WEB 站点,若无
,
5)本地DNS 根据cache.dns 文件中指定的根DNS 服务器的IP 地址,转向根DNS 查询。
6)根DNS 收到查询请求后,查看区域文件记录,若无,则将其管辖范围内.com 服务器的IP 地址告诉本地DNS 服
务器
7).com 服务器收到查询请求后,查看区域文件记录,若无,则将其管辖范围内.xxx 服务器的IP 地址告诉本地DNS
服务器
8).xxx 服务器收到查询请求后,分析需要解析的域名,若无,则查询失败,若有,返回www.xxx.com 的IP 地址给
本地服务器
9)本地DNS 服务器将www.xxx.com 的IP 地址返回给客户端,客户端通过这个IP 地址与WEB 站点建立连接
10、DNS 名词应用
dns 已经基本成为一个非常知名缩写,很多做域名的公司都用dns 做域名,如www.dns.com.cn (新网互联),ww
w.2ndDNS.com (第二域名)
-----------------------------------------------------------------------------------------------------------------
一、什么是DNS ?
DNS 的中文意思是:域名服务。域名服务是提供[主机名]到[IP地址]转换的一段计算机程序。
BoBoUse 人的大脑记住一组资源的名字比较容易,而记住这组资源的地址很难,但实际上我们又必须使用地址来访问资源
,所以必须有一个系统来提供名字到地址的翻译服务。
下面的例子,当您要访问昆明湖、玉兰堂等景观,您首先会想到两个景点都属于 颐和园,而不会想到 颐和园的经
,片警A 就提供了DNS :纬度,而事实上我们是通过经纬度来访问一组资源的。当您来到一个陌生的城市,向离您最进的片警A 问路的时候
1、您问道:“您能告诉我颐和园怎么走么?”。
2、片警A 说:“我不知道,但我知道颐和园隶属于四环,负责四环的是片警B ,片警B 的经纬度是117.2/30.2”。
3、您到了北四环,根据经纬度到片警B 问:“您能告诉我颐和园怎么走么?”。
4、片警B 说:“我不知道,但我知道颐和园属于海殿区,负责海淀的是片警C ,片警C 的经纬度是117.3/30.3”。
5、您到了海淀区,根据经纬度找到片警C 问:“您能告诉我颐和园怎么走么?”
6、片警C 说:“颐和园在经度117.03333、纬度30.51666”
7、知道了颐和园的坐标,您就可以到颐和园参观了。
注意:以上过程,在DNS 查询中有个专业术语,叫做迭代查询。也许您还听说过递归查询。
1、就是当您向片警A 问路的时候,您希望片警A 给您一个确切的回答:“您可以告诉我颐和园怎么走么?我这是递
归查询,也就是说,您不要再让我跑腿问别人了,您帮我问。”
2、交警A 如果也发出的是递归查询问交警B :“您可以告诉我颐和园怎么走么?我这是递归查询,也就是说,您不
要再让我跑腿问别人了,您帮我问。”
3、交警B 如果也发出的是递归查询问交警C :“您可以告诉我颐和园怎么走么?我这是递归查询,也就是说,您不
要再让我跑腿问别人了,您帮我问。”
4、交警C 对交警B 说:“颐和园就在经度117.03333、纬度30.51666”
5、交警B 对交警A 说:“颐和园就在经度117.03333、纬度30.51666”
6、交警A 对您说:“颐和园就在经度117.03333、纬度30.51666”
我可以冒充片警C 吗?除非您把片警C kill掉,否则即使您穿着片警C 的衣服,打扮的和片警C 一模一样,也不会有
人找您问路。因为片警C 始终都在经纬度是117.3/30.3的地方蹲点,问路的人只会根据片警B 找经纬度117.3/30.3
的片警C 。冒充片警B 呢?一个道理,问路的人只会根据片警A 找到经纬度是117.2/30.2的片警 B。那冒充片警A 呢
?您要自问一下,片警A 的经纬度是谁告诉您的,告诉您的人可信不可信。一般我们通过ADSL 拨号上网的家庭用
户,电信接入端给我们提供片警A 既DNS 服务器的经纬度既IP 地址都是真实的。二、为什么用DNS ?
,也许您感觉很烦琐,为什么不成立一个问路系统,比如114查号,114问路系统存储了世界上所有名字到经纬度的
对应关系。那么您考虑一下,如果114系统由于查询量过大而瘫痪呢?或者中毒而无法提供服务呢?等等这些问题
会延误世界人民查询名字到地址的对应关系。您可能会说,那在世界上建立1000个问路系统,比如电话号从1000
到1999都提供名字到经纬度翻译服务,这样当一个号码打不通,客户可以打另一个。但您应该想到,这样的系统
维护起来太麻烦了,比如您自立门户了,买了处房子,房子的经纬度是122.2/122.3,名字叫‘上海、汤臣、56弄、
crysta 家’,那世界上所有1000个问路系统都要添加这样的对应关系。同样的问题,如果crystal 把房子卖给了seeb
od ,那房子名就叫‘上海、汤臣、56弄、seebod 家’,世界上所有1000个问路系统同样要更新。为了解决这个问题
,就采用了最初片警的例子,每个片警只负责他自己的一片区域。
具体看一个名字到地址的解析过程(上面的例子仅是为了引发您的思维,而不能与实际的DNS 查询过程一一对应
,不要生搬硬套)
当您在浏览器中输入(www.seebod.com. ),我们的电脑是如何得到IP 地址的:
1、浏览器发现是一个名字,于是调用我们机器内部的DNS Client软件,这个软件会把我们的请求发送到网卡Tcp/
IP 设置中的默认DNS 服务器IP 地址(上海电信提供DNS 的服务器有3台,其中一台IP 是202.96.209.5):“您可以
告诉我www.seebod.com. 的IP 地址吗?我这是一个递归查询”
2、 202.96.209.5的DNS 服务器会检查自己的DNS 缓存,如果缓存里有,就直接返回给客户,如果没有,202.96.
209.5就会向自己系统内部配置中负责. 域的DNS 服务器的IP 地址(负责. 域的那台DNS 服务器位于美国,共13台,
系统会随机选一台,这里比如是61.1.1.1)发出请求: “您能告诉我www.seebod.com. 的IP 地址吗?我这是一个跌
代查询”
3、. 域DNS 服务器61.1.1.1中包含负责net. 域解析的IP 地址,把查询结果返回给202.96.209.5:“负责net. 域的DNS
服务器地址是54.4.4.4”
BoBoUse 4、202.96.209.5收到上面的查询结果后,于是询问负责net. 域的DNS 服务器54.4.4.4 :“您能告诉我负责www.see
bod.com. 的IP 地址吗?我这是一个跌代查询。”
5、负责net. 域的DNS 服务器54.4.4.4把查询后的结果返回给202.96.209.5:“负责seebod.com. 域的dns 服务器的ip
地址是 211.152.17.58”
6、202.96.209.5收到上面的查询结果够,于是询问负责seebod.com. 域的DNS 服务器211.152.17.58:“您能告诉
我www.seebod.com. 所对应的IP 地址吗?”
7、211.152.17.58把查询后的结果返回给202.96.209.5:“www.seebod.com.对应的IP 地址是211.100.26.123”
8、202.96.209.5把最终结果放到自己的DNS 缓存里,这样以后就不用再进行上面的跌代查询了。
9、202.96.209.5把最终结果返回给最初发起请求的客户机。
10、客户机的dns client软件把最终结果返回给浏览器。
11、浏览器把目的IP 地址连同http 数据传递给网络层。
12、网络层根据目标地址判断路由,发现目标IP 地址211.152.17.58与本机不在同一个网段(判断是否是同一个网
段使用子网掩码与目的IP 地址做与运算) ,于是决定把次包发给网关。
13、检查本地arp 缓存表获得本地网关的MAC 地址。
.....
........
三、DNS 在哪里?
提供DNS 的是计算机,是安装了DNS 服务器端软件的计算机。服务器端软件即可以是基于类Unix 操作系统,也可
以是基于Windows 操作系统的。装好DNS 服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文
件就是包含了此域中名字到IP 地址解析记录的一个文件(如文件名可能是seebod.com. 这个文件的内容是这样的
:
primary name server = dns2.100ok.com (主服务器的主机名是 dns2.100ok.com)
serial = 2007042913 (当前序列号是2007042913。这个序列号的作用是当辅域名服务器来copy 时候这个文件时
,如果号码增加了就copy )
refresh = 10800 (3 hours) (辅域名服务器每隔3小时查询一个主服务器)
retry = 3600 (1 hour) (当辅域名服务试图在主服务器上查询更时,而连接失败了,辅域名服务器每隔1小时访问
主域名服务器)
,

(1)用nslookup 来判断是否真的是DNS 解析故障:
要想百分之百判断是否为DNS 解析故障就需要通过系统自带的NSLOOKUP 来解决了。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车
进入命令行模式。
第二步:输入nslookup 命令后回车,将进入DNS 解析查询界面。
第三步:命令行窗口中会显示出当前系统所使用的DNS 服务器地址,例如笔者的DNS 服务器IP 为202.106.0.20。
第四步:接下来输入你无法访问的站点对应的域名。例如笔者输入www.xkq.com ,假如不能访问的话,那么DNS
解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明
我们的计算机确实出现了DNS 解析故障。
小提示:如果DNS 解析正常的话,会反馈回正确的IP 地址,例如笔者用www.xkq.com 这个地址进行查询解析,会
得到name:ciidnet.com,addresses :61.135.133.103,61.135.133.104的信息。
(2)查询DNS 服务器工作是否正常:
这时候我们就要看看自己计算机使用的DNS 地址是多少了,并且查询他的运行情况。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车
进入命令行模式。
第二步:输入ipconfig /all命令来查询网络参数。
第三步:在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS 服务器地址
BoBoUse 析错误时,我们可以更换一个其他的DNS 服务器地址即可解决问题。
第四步:如果在DNS 服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS 解析工作是交给公司
正常解析。解决DNS 服务器上的DNS 服务故障,一般来说问题也能够解决。
(3)清除DNS 缓存信息法:内部的DNS 服务器来完成的,这时我们需要检查这个DNS 服务器,在DNS 服务器上进行nslookup 操作看是否可以
当计算机对域名访问时并不是每次访问都需要向DNS 服务器寻求帮助的,一般来说当解析工作完成一次后,该解
析条目会保存在计算机的DNS 缓存列表中,如果这时DNS 解析出现更改变动的话,由于DNS 缓存列表信息没有改
变,在计算机对该域名访问时仍然不会连接DNS 服务器获取最新解析信息,会根据自己计算机上保存的缓存对应
关系来解析,这样就会出现DNS 解析故障。这时我们应该通过清除DNS 缓存的命令来解决故障。
第一步:通过“开始->运行->输入CMD”进入命令行模式。
第二步:在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS 缓存信息
的命令。
第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前
计算机的缓存信息已经被成功清除。
第四步:接下来我们再访问域名时,就会到DNS 服务器上获取最新解析地址,再也不会出现因为以前的缓存造成
解析错误故障了。
(4)修改HOSTS 文件法:
修改HOSTS 法就是把HOSTS 文件中的DNS 解析对应关系进行修改,从而实现正确解析的目的。因为在本地计算
机访问某域名时会首先查看本地系统中的HOSTS 文件,HOSTS 文件中的解析关系优先级大于DNS 服务器上的解
析关系。
这样当我们希望把某个域名与某IP 地址绑定的话,就可以通过在HOSTS 文件中添加解析条目来实现。
第一步:通过“开始->搜索”,然后查找名叫hosts 的文件。
第二步:当然对于已经知道他的路径的读者可以直接进入c:windowssystem32driversetc目录中找到HOSTS 文
件。如果你的系统是windows 2000,那么应该到c:winntsystem32driversetc目录中寻找。
第三步:双击HOSTS 文件,然后选择用“记事本”程序将其打开。
第四步:之后我们就会看到HOSTS 文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前
面带有#的行都不是真正的内容,只是帮助信息而已)
第五步:将你希望进行DNS 解析的条目添加到HOSTS 文件中,具体格式是先写该域名对应的IP 地址,然后空格接。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS 出现解
,域名信息。例如笔者添加了“211.153.80.1www.xkq.com”与“10.82.0.1www.xkq.com”两个条目。
第六步:设置完毕后我们访问www.xkq.com 时就会自动根据是在内网还是外网来解析了。
三、总结:
通过上面介绍的四个步骤,我们就可以解决大部分DNS 解析问题了,这几个方法中前三个是循序渐进的一步步解决DNS 解析故障,而最后一个修改HOSTS 文件则是在实在没有办法的时候,一种权宜之计。当然不管是通过哪种方法,我们都可以解决因为DNS 解析错误带来的网络故障。[4]
BoBoUse