DNS(Domain Name System)在tcp/ip网络中,一个用户通过指定一个名字就可与其他用户进行通信,这个名称的规定和解析系统就叫域名系统。我们常用DNS代指域名解析服务(Domain Name Service),它最基本的功能就是将我们在IE地址栏中输入的URL域名(如:www.yesky.com )解析成网络上唯一的Internet地址即IP(如:218.201.41.19),这个工作由网络上的DNS服务器来完成。我们每天上网最频繁的操作恐怕就属发出DNS请求来访问网站了,而我遇到的两个怪现象都跟本地系统对DNS的相应设定有关。
怪现状之一:在一以开启NAT路由的ADSL MODEM为网关设备的局域网中,一台主机在访问一个平时非常稳定的大站点时,出现了“该页无法显示”的状况,刷新多次也未能正常,而同一时刻在别的主机上却登录正常。过了几分钟,这台故障主机又莫名其妙的好了,访问此站点时一切正常了。
分析:这种情况,由于其他的网络操作都正常,故障也不时常发生,一般用户很可能会认为自己的系统、IE浏览器和防火墙设置哪里出现了小冲突。其实这个故障的现象是由于本地系统的DNS缓存服务造成的。
在win2000以上的MS系统中,系统会自动的将从DNS服务器上的查询结果保存在本地的DNS缓存中(每次启用DNS缓存时,Hosts文件中记录也会被载入缓存中),那么下次再有重复的查询请求,系统会优先查询本地缓存,如果已有对照的条目则不再向DNS服务器发起请求,缓存中无记录时才查询DNS服务器。本来设定此DNS缓存的目的是为了能减少DNS服务器的负荷,不用为同一个域名解析多次,也同时能加快客户主机上的访问速度。在DNS缓存中记录条目每隔一段时间将被更新一次,长时间不用的条目将被丢弃,这个时间间隔称为生存时间(TTL)。默认情况下,得到肯定响应的条目TTL为86,400 秒(1 天),否定响应的TTL win2000下是300秒(5分钟),在winXP和2003中 是 900 秒(15 分钟)。正是由于这个否定响应的TTL时间存在,所以才造成了故障主机在得到一次否定的DNS解析之后一段时间内无法再到DNS服务器上查询,只有等TTL时间过后,这条否定的记录被清除,才能恢复。
遇到这种情况,我们能采取的最简单手段是刷新DNS,也就是删除 DNS 解析器缓存中的条目。点击“开始”-“运行”-输入cmd并点击“确定”,在命令提示符窗口中键入:ipconfig /flushdns,然后按 Enter 键。你将会收到“Successfully flushed the DNS Resolver Cache.”的显示,这时你的DNS缓存已被重置,主机发起的查询请求将再次发向DNS服务器。
注:查看本地DNS缓存记录的命令为:ipconfig /displaydns。你将会看到包括本地Hosts文件记录和已访问过的站点在内的所有DNS记录。如图1所示:

图 1